Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Danilo,
Grazie per l'attenzione. Il codice è quello giusto.
Bene!
Non vorrei farti perdere ulteriore tempo, ma ho un problema.
cerco di fare questo inserimento nella cella A50, es: Sheets("Foglio1").Range("A50") = Me.Combobox1.Text
ma mi inserisce solo la prima voce (B2), come posso fare per immettere le ulteriori voci delle colonne C2,G2,H2,I2?
Per restituire i valori di una data riga di un controllo ComboBox (o ListBox) con più colonne, sarebbe necessario gestire l'array di valori de quella riga! La proprietà Value di un tale controllo ComboBox restituirebbe solo il valore di una singola colonna, ovvero la colonna precisata dalla proprietà BoundColumn del controllo. Per default questa sarebbe la prima colonna. Per vedere un esempio di un modo di restituire i valori della scelta riga del controllo vedi la procedura cbCopiaDati nel codice qui sotto e, per provarlo, premi il pulsante Copia Dati nella Userform2 del mio file di prova aggiornato.
Come si visualizzano tutte le voci nella Combobox1?
Se avessi utilizzato un controllo ListBox, come suggerito da me e come dimostrato nel file che avevo caricato, vedresti le voci automaticamemrnte. Nel caso della tua ComboBox, prova a premere la freccia di discesa.
Ho copiato il codice e al momento non ho l'opportunità di scaricare il file che hai postato.
Per curiosità, è possibile avere un esempio di come caricare la Combobox con il secondo approccio di cui parlavi?
Crea una seconda Userform, Userform2, con un controllo ListBox, e due pulsanti denominati cbCopiaDati e cbEsci, In un modulo standard, incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Public Sub MostraUserform()
UserForm2.Show vbModeless
End Sub
'--------->>
Public Function LastRow(SH As Worksheet, _
Optional Rng As Range, _
Optional minRow As Long = 1, _
Optional sPassword As String)
Dim bProtected As Boolean
With SH
If Rng Is Nothing Then
Set Rng = .Cells
End If
bProtected = .ProtectContents = True
If bProtected Then
.Unprotect Password:=sPassword
End If
End With
On Error Resume Next
LastRow = Rng.Find(What:="*", _
after:=Rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
If LastRow < minRow Then
LastRow = minRow
End If
If bProtected Then
SH.Protect Password:=sPassword, _
UserInterfaceOnly:=True
End If
End Function
'<<=========
Nel modulo di codice della seconda Userform, incolla il seguente codice:
'=========>>
Option Explicit
Dim WB As Workbook
Dim SH As Worksheet
'--------->>
Private Sub cbCopiaDati_Click()
Dim destSH As Worksheet
Dim destRng As Range
Dim vArr As Variant
Dim LRow As Long
Const sFoglio2 As String = "Foglio2"
Set destSH = WB.Sheets(sFoglio2)
With destSH
LRow = LastRow(destSH, .Columns("A:A"))
Set destRng = .Range("A" & LRow + 1)
End With
With Me.ListBox1
vArr = Application.Index(.List, .ListIndex + 1, 0)
End With
destRng.Resize(1, UBound(vArr)).Value = vArr
End Sub
'--------->>
Private Sub UserForm_Initialize()
Dim Rng As Range
Dim arrIn As Variant, arrDati As Variant, arrColonne As Variant
Dim LRow As Long
Dim Res As Variant
Dim i As Long, j As Long, k As Long
Const sFoglio As String = "Foglio1"
Const sColonne As String = "2,3,7,8,9" '\ Colonne B:C, G:I
Set WB = ThisWorkbook
Set SH = WB.Sheets(sFoglio)
With SH
LRow = LastRow(SH, .Columns("A:A"))
Set Rng = .Range("A2:I" & LRow)
End With
arrIn = Rng.Value
arrColonne = Split(sColonne, ",")
ReDim arrDati(1 To UBound(arrIn), 1 To UBound(arrIn, 2) - UBound(arrColonne))
For i = 1 To UBound(arrIn)
k = 0
For j = 1 To UBound(arrIn, 2)
Res = Application.Match(CStr(j), (arrColonne), 0)
If Not IsError(Res) Then
k = k + 1
arrDati(i, k) = arrIn(i, j)
End If
Next j
Next i
With Me.ListBox1
.ColumnCount = UBound(arrDati, 2)
.ColumnWidths = "70;70;100;85;85"
.List = arrDati
.ListIndex = 0
End With
End Sub
'--------->>
Private Sub cbEsci_Click()
Unload Me
End Sub
'<<=========
Potresti scaricare il mio file di prova aggiornato Danilo20171010.xlsm
===
Regards,
Norman