Ho trovato molto interessante il file di esempio gestionefogliodauserform_2.xls
http://answers.microsoft.com/
Ho apportato alcune piccole modifiche e non riesco a capire i motivi del malfunzionamento
Avete la possibilità di aiutarmi??
1- Ho aggiunto FoglioARCHIVIO per poter nascondere sia Registro che Dati
2- Aggiunte colonne da E a L intestandole Col5 -> Col12 Per avere più dati su ogni RECORD
(Non posso più usare AddItem 0-9 per caricare la ListBox ma devo usare RowSource)
3- Nella ListBox si possono visualizzare fino a max 10 colonne (Me ne bastano 4 o 5 per avere la possibilità di individuare il RECORD scelto)
4- Aggiunte TextBox5 e TextBox6 (Mi servono 12 TextBox per visualizzare tutti i Dati del RECORD ma nell'esempio visualizzo dati Col8 e Col12)
PROBLEMI RISCONTRATI
A- Usando RowSource per caricare i Dati, la Sub MODIFICA non gira correttamente in quanto nel momento in cui arriva all'istruzione
.Range("B" & lng).Value = dbl salta a Private Sub ListBox1_Click() che va a ricaricare nelle TextBox i dati presenti in ListBox
andando a cancellare la "modifica" che si vuole apportare (per esempio caricare il Record di Gastone999 e cambiarlo in Gastone111...Non funziona)
Non riesco a capire perchè usando AddItem la sequenza dell'esecuzione delle istruzioni è corretta, mentre con RowSource salta a Private Sub ListBox1_Click()
'Sub che pulisce le TextBox
Private Sub mPulisciTextBox()
With Me
.TextBox1.Text = ""
.TextBox2.Text = ""
.TextBox3.Text = ""
.TextBox4.Text = ""
.TextBox5.Text = "" '------Aggiunta
.TextBox6.Text = "" '------Aggiunta
End With
End Sub
'Al click sulla ListBox1
Private Sub ListBox1_Click()
'Richiamo la Sub che polola la ListBox
Call mPopolaTextBox
End Sub
'Sub che popola le TextBox
Public Sub mPopolaTextBox()
With Me
.TextBox1.Text = .ListBox1.List(.ListBox1.ListIndex, 0)
.TextBox2.Text = CDbl(.ListBox1.List(.ListBox1.ListIndex, 1))
.TextBox3.Text = CDate(.ListBox1.List(.ListBox1.ListIndex, 2))
.TextBox4.Text = .ListBox1.List(.ListBox1.ListIndex, 3)
.TextBox5.Text = .ListBox1.List(.ListBox1.ListIndex, 7) '------Aggiunta
.TextBox6.Text = .ListBox1.List(.ListBox1.ListIndex, 11) '------Aggiunta
End With
End Sub
Private Sub mCaricaListBox() '--------------------------------------------- MODIFICATA, usando RowSource
Dim rng As Range
sh.Select
lRiga = sh.Range("A" & sh.Rows.Count).End(xlUp).Row
Set rng = sh.Range(Cells(2, 1), Cells(lRiga, 12)) 'Definisco TUTTA l'area da utilizzare nella ListBox
With Me.ListBox1
'.ColumnCount = 5 'rng.Columns.Count
.RowSource = sh.Name & "!" & rng.Address
'.RowSource = "RECORD" 'Prova con Nome Area
End With
End Sub
B- Cosa altrettanto strana è che la Private Sub cmdInserisci_Click() funziona correttamente (usando F8 ho verificato la corretta sequenza nell'esecuzione)
C- Con queste impostazioni e le Sub così definite, mi da errore se ho i Fogli Nascosti quando vado a definire il RANGE
(potrei mettere nel ciclo Scopri e Nascondi ogni volta)