Valore della casella di text UserForm non aggiornato quando viene modificato

Sono stato a graffiare la testa su questo per un po 'di tempo e dopo molte ricerche di Google non ho trovato una risposta. Sto solo imparando a scrivere questa roba, quindi mi dispiace in anticipo se questa è una roba di base che dovrei già sapere. Fondamentalmente quello che sto facendo sta popolando una userform con i dati di un foglio di calcolo. L'utente seleziona un valore da un combobox e quindi i dati corrispondenti del foglio di calcolo sono popolati in caselle di text nel module. L'utente può quindi modificare quelle caselle di text e salvare le modifiche, ma non vengono salvate modifiche. Per qualche motivo il valore della casella di text non cambia dal valore originale anche se il text nella casella di text è stato modificato. Il mio codice è riportto di seguito. Il primo block è il codice utilizzato per popolare le caselle di text quando il combobox viene modificato. Quella parte funziona bene. Il secondo block è il codice utilizzato per salvare i nuovi dati e questo è ciò che non funziona.

Private Sub PartToEdit_Change() Dim lngDataRow As Long lngDataRow = EditPartForm.PartToEdit.ListIndex + 1 EditPartForm.Customer.Value = Worksheets("Sheet3").Cells(lngDataRow, 2) 'customer name EditPartForm.Color.Value = Worksheets("Sheet3").Cells(lngDataRow, 4) 'color EditPartForm.PartNumber.Value = Worksheets("Sheet3").Cells(lngDataRow, 1) 'part number EditPartForm.Desc.Value = Worksheets("Sheet3").Cells(lngDataRow, 3) 'description EditPartForm.Step1.Value = Worksheets("Sheet3").Cells(lngDataRow, 5) 'step 1 EditPartForm.Step2.Value = Worksheets("Sheet3").Cells(lngDataRow, 6) 'step 2 EditPartForm.Step3.Value = Worksheets("Sheet3").Cells(lngDataRow, 7) 'step 3 EditPartForm.Step4.Value = Worksheets("Sheet3").Cells(lngDataRow, 8) 'step 4 EditPartForm.Step5.Value = Worksheets("Sheet3").Cells(lngDataRow, 9) 'step 5 EditPartForm.Step6.Value = Worksheets("Sheet3").Cells(lngDataRow, 10) 'step 6 EditPartForm.Step7.Value = Worksheets("Sheet3").Cells(lngDataRow, 11) 'step 7 EditPartForm.Step8.Value = Worksheets("Sheet3").Cells(lngDataRow, 12) 'step 8 EditPartForm.Step9.Value = Worksheets("Sheet3").Cells(lngDataRow, 13) 'step 9 EditPartForm.Step10.Value = Worksheets("Sheet3").Cells(lngDataRow, 14) 'step 10 EditPartForm.BlastTime.Value = Worksheets("Sheet3").Cells(lngDataRow, 15) 'blast time EditPartForm.PrepTime.Value = Worksheets("Sheet3").Cells(lngDataRow, 16) 'prep time EditPartForm.PaintTime.Value = Worksheets("Sheet3").Cells(lngDataRow, 17) 'paint time EditPartForm.BakeTime.Value = Worksheets("Sheet3").Cells(lngDataRow, 18) 'bake time EditPartForm.PartNotes.Value = Worksheets("Sheet3").Cells(lngDataRow, 19) 'special notes EditPartForm.PicPath.Value = Worksheets("Sheet3").Cells(lngDataRow, 20) 'picture path End Sub Private Sub SavePartButton_Click() Dim lngDataRow As Long lngDataRow = EditPartForm.PartToEdit.ListIndex + 1 Sheets("Sheet3").Range("A" & lngDataRow).Value = EditPartForm.PartNumber.Text 'part number Sheets("Sheet3").Range("B" & lngDataRow).Value = EditPartForm.Customer.Text 'customer Sheets("Sheet3").Range("C" & lngDataRow).Value = EditPartForm.Desc.Text 'description Sheets("Sheet3").Range("D" & lngDataRow).Value = EditPartForm.Color.Text 'color Sheets("Sheet3").Range("E" & lngDataRow).Value = EditPartForm.Step1.Text 'step 1 Sheets("Sheet3").Range("F" & lngDataRow).Value = EditPartForm.Step2.Text 'step 2 Sheets("Sheet3").Range("G" & lngDataRow).Value = EditPartForm.Step3.Text 'step 3 Sheets("Sheet3").Range("H" & lngDataRow).Value = EditPartForm.Step4.Text 'step 4 Sheets("Sheet3").Range("I" & lngDataRow).Value = EditPartForm.Step5.Text 'step 5 Sheets("Sheet3").Range("J" & lngDataRow).Value = EditPartForm.Step6.Text 'step 6 Sheets("Sheet3").Range("K" & lngDataRow).Value = EditPartForm.Step7.Text 'step 7 Sheets("Sheet3").Range("L" & lngDataRow).Value = EditPartForm.Step8.Text 'step 8 Sheets("Sheet3").Range("M" & lngDataRow).Value = EditPartForm.Step9.Text 'step 9 Sheets("Sheet3").Range("N" & lngDataRow).Value = EditPartForm.Step10.Text 'step 10 Sheets("Sheet3").Range("O" & lngDataRow).Value = EditPartForm.BlastTime.Text 'blast time Sheets("Sheet3").Range("P" & lngDataRow).Value = EditPartForm.PrepTime.Text 'prep time Sheets("Sheet3").Range("Q" & lngDataRow).Value = EditPartForm.PaintTime.Text 'paint time Sheets("Sheet3").Range("R" & lngDataRow).Value = EditPartForm.BakeTime.Text 'bake time Sheets("Sheet3").Range("S" & lngDataRow).Value = EditPartForm.PartNotes.Text 'part notes Sheets("Sheet3").Range("T" & lngDataRow).Value = EditPartForm.PicPath.Text 'picture path Unload EditPartForm End Sub 

Se cambio manualmente i dati utilizzando qualcosa come il codice qui sotto, aggiorna bene.

 Sheets("Sheet3").Range("A" & lngDataRow).Value = "Some Value" 

Per favore aiuto!

Grazie!

Ha cercato di mettere un punto di interruzione e di vedere se effettivamente eseguire? Controllare anche il tuo 'watch' durante il debug che i valori che scrivi sono i valori che volete scrivere.

Nei miei progetti uso:

 Sheet.Cells(row, col).value = value