Office

  • Office 2007
  • Office
  • Tutti i forum
Domanda

proprietà listbox

Si applica a:

Cortesemente un aiuto ad un principiante ... ; vorrei capire il funzionamento di alcune proprietà  di una listbox; questo il codice utilizzato:


Private Sub UserForm_Initialize()
Dim xRigaF1 As Long
Dim xRigaF2 As Long
Dim xScaduti As String
Dim xInScadenza As String
xRigaF1 = Sheets("Scaduti").Cells(Rows.Count, 1).End(xlUp).Row
xScaduti = "Scaduti!A2:F" & xRigaF1
With Me.ListBox1
    .ColumnHeads = True
    .RowSource = xScaduti
    .ColumnCount = 6
    .ColumnWidths "100;80;30;60;30"
End With
xRigaF2 = Sheets("InScadenza").Cells(Rows.Count, 1).End(xlUp).Row
xInScadenza = "InScadenza!A2:F" & xRigaF2
With Me.ListBox2
    .ColumnHeads = True
    .RowSource = xInScadenza
    .ColumnCount = 6
    .ColumnWidths "100;80;30;60;30"
End With
End Sub


in pratica ho la UserForm1 con due ListBox che caricano rispettivamenti i dati colonne A:F dei Fogli "Scaduti" e "InScadenza"

Anomalie riscontrate:

nel caso ad uno dei due fogli ho solo intestazione (quindi riga 1) e nessun dato, nella relativa listbox mi compare come intestazione "Colonna A", "Colonna B", ecc. e come prima riga le intestazioni della prima riga, mentre mi dovrebbe comparire solo intestazione (prima riga) e nessun dato.
Mi sembra un comportamento strano e vorrei capire dove sbaglio nel codice.

Altro problema sulla riga:

.ColumnWidths "100;80;30;60;30"

mi và in errore: "Errore di compilazione: Utilizzo non valido di Property", come devo impostare per determinare la larghezza di colonne delle due ListBox?
Grazie mille e una buona notte a tutti.

Ciao Antonio

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento
1 Utente aveva
questa domanda

freeantforum

freeantforum
Ciao
Antonio

È stato utile?

1

Vota

Risposta

Ciao Antonio,

puoi provare in questo modo:

---

    Dim xRigaF1 As Long
    Dim xRigaF2 As Long
    Dim xScaduti As String
    Dim xInScadenza As String
   
    xRigaF1 = Sheets("Scaduti").Cells(Rows.Count, 1).End(xlUp).Row
    If xRigaF1 = 1 Then xRigaF1 = 2
   
    xScaduti = "Scaduti!A2:F" & xRigaF1
   
    With Me.ListBox1
        .ColumnHeads = True
        .RowSource = xScaduti
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
   
    xRigaF2 = Sheets("InScadenza").Cells(Rows.Count, 1).End(xlUp).Row
    If xRigaF2 = 1 Then xRigaF2 = 2
   
    xInScadenza = "InScadenza!A2:F" & xRigaF2
   
    With Me.ListBox2
        .ColumnHeads = True
        .RowSource = xInScadenza
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
---

 

David

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

- David -

Moderatore della community

È stato utile?

Cortesemente un aiuto ad un principiante ... ; vorrei capire il funzionamento di alcune proprietà  di una listbox; questo il codice utilizzato:


<cut>


in pratica ho la UserForm1 con due ListBox che caricano rispettivamenti i dati colonne A:F dei Fogli "Scaduti" e "InScadenza"

Anomalie riscontrate:

nel caso ad uno dei due fogli ho solo intestazione (quindi riga 1) e nessun dato, nella relativa listbox mi compare come intestazione "Colonna A", "Colonna B", ecc. e come prima riga le intestazioni della prima riga, mentre mi dovrebbe comparire solo intestazione (prima riga) e nessun dato.
Mi sembra un comportamento strano e vorrei capire dove sbaglio nel codice.

Altro problema sulla riga:

.ColumnWidths "100;80;30;60;30"

mi và in errore: "Errore di compilazione: Utilizzo non valido di Property", come devo impostare per determinare la larghezza di colonne delle due ListBox?
Grazie mille e una buona notte a tutti.

Ciao Antonio


Per ciò che riguarda la proprietà ColumnWidths, manca il simbolo di assegnazione(=), vedi codice.

Il resto non l'ho capito. Il codice qui sotto prende tutti i valori da A1:F(n) compresa l'eventuale intestazione per Scaduti e tralascia la prima riga per InScadenza:

Private Sub UserForm_Initialize()

    Dim shScaduti As Worksheet
    Dim shInScadenza As Worksheet
    Dim lRigaScaduti As Long
    Dim lRigaInScadenza As Long
   
    With ThisWorkbook
        Set shScaduti = .Worksheets("Scaduti")
        Set shInScadenza = .Worksheets("InScadenza")
    End With
   
   lRigaScaduti = shScaduti.Range("A" & Rows.Count).End(xlUp).Row
   lRigaInScadenza = shInScadenza.Range("A" & Rows.Count).End(xlUp).Row
   
    With Me.ListBox1
        .RowSource = shScaduti.Name & "!A1:F" & lRigaScaduti
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
   
    With Me.ListBox2
        .RowSource = shInScadenza.Name & "!A2:F" & lRigaInScadenza
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
   
    Set shScaduti = Nothing
    Set shInScadenza = Nothing
   
 End Sub

Qui trovi il file utilizzato per le mie prove: http://www.maurogsc.eu/esempiforum12/duelistbox1201.zip

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

Mauro Gamberini

Moderatore della community
--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

È stato utile?

1

Vota

Risposta

Ciao Antonio,

puoi provare in questo modo:

---

    Dim xRigaF1 As Long
    Dim xRigaF2 As Long
    Dim xScaduti As String
    Dim xInScadenza As String
   
    xRigaF1 = Sheets("Scaduti").Cells(Rows.Count, 1).End(xlUp).Row
    If xRigaF1 = 1 Then xRigaF1 = 2
   
    xScaduti = "Scaduti!A2:F" & xRigaF1
   
    With Me.ListBox1
        .ColumnHeads = True
        .RowSource = xScaduti
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
   
    xRigaF2 = Sheets("InScadenza").Cells(Rows.Count, 1).End(xlUp).Row
    If xRigaF2 = 1 Then xRigaF2 = 2
   
    xInScadenza = "InScadenza!A2:F" & xRigaF2
   
    With Me.ListBox2
        .ColumnHeads = True
        .RowSource = xInScadenza
        .ColumnCount = 6
        .ColumnWidths = "100;80;30;60;30"
    End With
---

 

David

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

- David -

Moderatore della community

È stato utile?

Per il primo problema avevo risolto, mi sono accorto che nel compilare avevo omesso un semplice "=", colpa l'ora tarda ... e la vista che non è più il massimo ... mancava anche larghezza di una colonna :-((

Grazie David per il codice, è perfetto; difatti, vista la tua corresione e ragionandoci, le variabili xRigaF1 e xRigaF2 in caso di solo intestazioni restituiscono 1 e per questo mi caricava la prima riga come dato.
Erroneamente pensavo che definendo inizio riga 2 con: "xScaduti = "Scaduti!A2:F" & xRigaF1", non considerasse.

Ringrazio anche Mauro, sempre presente, per intervento. Un saluto a tutti e buona giornata.

Ciao Antonio

    • Sfruttamento o abuso di minori
    • Molestie o minacce
    • Contenuto inappropriato o per adulti
    • Nudità
    • Linguaggio blasfemo
    • Pirateria software
    • SPAM/Pubblicità
    • Pericolo di virus/spyware/malware
    • Altra violazione delle Condizioni per l'utilizzo o del Codice di comportamento

freeantforum

freeantforum
Ciao
Antonio

I messaggi contrassegnati come risposte non possono essere eliminati

Per eliminare questo messaggio, annulla prima il contrassegno di risposta.

Motivo per rimuovere l'inoltro


Unisci

Immetti l'ID thread del thread in cui si esegue l'unione


La risposta sarà pubblicata in un thread pubblico

Stai rispondendo a una parte pubblica di questo thread. Per rispondere in privato, fai clic su Annulla, seleziona la scheda Messaggi privati e scegli Rispondi sul messaggio privato.

Non visualizzare questo messaggio in futuro

Per segnalare un abuso, accedi o continua senza accedere

Grazie.

Segnala abuso

Tipo di abuso:

Dettagli (facoltativi):

Segnala abuso

Tipo di abuso:

Dettagli (obbligatori):
Immetti i caratteri che vedi (obbligatorio):
Digita i numeri visualizzati nell'immagine.
Riproduci l'audio e digita i numeri che ascolti.
Mostra un'altra immagine.

Accedi

Puoi accedere anche con l'account di Hotmail, Xbox Live, Messenger o msn.

Non possiedi uno di questi account?

Accesso in corso...
La pagina si aggiornerà automaticamente una volta effettuato l'accesso.
Se riscontri problemi, puoi chiudere il messaggio e riprovare a collegarti.