Userforn textbox/label

Anonimo
2019-03-20T06:59:36+00:00

Buogiorno ragazzi ho una richiesta da farvi:

Su Foglio1 ho un range di celle (A1:AE24) che tramite una formattazione condizionata in base al valore inserito che va da 1 a 12 cambiano colore di sfondo. Io devo ricreare la stessa cosa con una Userform, che andrò a richiamare con un CommandButton, formata da tanti textbox o label (a seconda di quello che sarà più opportuno) che andranno a cambiare il colore sfondo in base alle celle collegate. Come posso fare tutto questo in VBA?H Help Help! Help!

Premessa: la Userform la so "costruire", mi serve la parte VBA

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2019-03-31T18:38:18+00:00

Prova con:

   Set oRangeP = ThisWorkbook.Worksheets("FERIE").Range(sRangeP)

   NumRigheP = oRangeP.Rows.Count

   With Me

   For i = 1 To NumRigheP Step 2

      cont=cont+1

      .Controls("Labelp" & cont).Caption = oRangeP(i, 1)

   Next i

   End With

Ne prosegui della tua routine c'è un "cont = cont + 1"

Ma mi pare che non sia poi realmente utilizzato (forse un residuo dal mio codice che "costruireva anche le label".

Se invece fosse utilizzato allora dopo il ciclo dei controlli del personale va impostato nuovamente a zero indicando cont = 0

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2019-03-31T18:26:27+00:00

Ma B3:B23 sono più di 12 righe (21 per l'esattezza).

Mentre le label del personale sono solo 12.

Ho letto male e l'intervallo è B3:B26, quindi 24 righe.

Si tratta di righe unite due a due?

La risposta è stata utile?

0 commenti Nessun commento

36 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2019-03-31T17:08:42+00:00

    In foglio3 dove ci sono i CommandButton ho:

    Private Sub CommandButton1_Click()

    sRange = "D3:AH26"

    sRangeP = "B3:B26"

        UserForm3.Show

    End Sub

    Private Sub CommandButton2_Click()

    etc.... etc.... fino a CommandButton5

    ...e sul modulo1 dove vado a dichiarare le variabili pubbliche ho:

    Option Explicit

    Public sRange As String,  sRangeP As String

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-03-31T17:03:11+00:00

    Nulla... con il codice aggiunto da errore, se lo elimino tutto come prima :(

    Di seguito UserForm/Foglio con CmdButton/Modulo variabile

    Private Sub UserForm_Initialize()

       Dim oRange As Range, oRangeP As Range

       Dim NumRighe As Long, NumCol As Long, NumRigheP As Long

       Dim i As Long, j As Long

       Dim cont As Long

       Dim iLng As Long, pLng As Long

       Labelp1.BackColor = RGB(255, 0, 0)

       Labelp2.BackColor = RGB(237, 125, 49)

       Labelp3.BackColor = RGB(255, 192, 0)

       Labelp4.BackColor = RGB(255, 255, 0)

       Labelp5.BackColor = RGB(84, 130, 53)

       Labelp6.BackColor = RGB(112, 173, 71)

       Labelp7.BackColor = RGB(146, 208, 80)

       Labelp8.BackColor = RGB(198, 224, 180)

       Labelp9.BackColor = RGB(180, 198, 231)

       Labelp10.BackColor = RGB(142, 169, 219)

       Labelp11.BackColor = RGB(48, 84, 150)

       Labelp12.BackColor = RGB(112, 48, 160)

      'Range Label Personale da foglio FERIE

       Set oRangeP = ThisWorkbook.Worksheets("FERIE").Range(sRangeP)

       NumRigheP = oRangeP.Rows.Count

       With Me

       For i = 1 To NumRigheP

          .Controls("Labelp" & i).Caption = oRangeP(i, 1)

       Next i

       End With

     'Range Label Personale da foglio FERIE

       Set oRange = ThisWorkbook.Worksheets("FERIE").Range(sRange)

       With oRange

          NumRighe = .Rows.Count

          NumCol = .Columns.Count

       End With

       With Me

          For i = 1 To NumRighe

             For j = 1 To NumCol

                cont = cont + 1

                With .Controls("Label" & cont)

                   iLng = oRange(i, j)

                   '.Caption = iLng       '<=== questo può essere eliminato

                    Select Case iLng

                      Case 1

                         .BackColor = RGB(255, 0, 0)

                      Case 2

                         .BackColor = RGB(198, 89, 17)

                      Case 3

                         .BackColor = RGB(255, 192, 0)

                      Case 4

                         .BackColor = RGB(255, 255, 0)

                      Case 5

                         .BackColor = RGB(84, 130, 53)

                      Case 6

                         .BackColor = RGB(112, 173, 71)

                      Case 7

                         .BackColor = RGB(146, 208, 80)

                      Case 8

                         .BackColor = RGB(169, 208, 142)

                      Case 9

                         .BackColor = RGB(180, 198, 231)

                      Case 10

                         .BackColor = RGB(142, 169, 219)

                      Case 11

                         .BackColor = RGB(48, 84, 150)

                      Case 12

                         .BackColor = RGB(112, 48, 160)

                   End Select

                End With

             Next j

          Next i

       End With

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-03-30T19:29:37+00:00

    Ancora grazie :) appena torno a casa stasera aggiorno la userform

    La risposta è stata utile?

    0 commenti Nessun commento