Заполнение данных формы пользователя VBA - PullRequest
0 голосов
/ 06 сентября 2018

Я пишу пользовательскую форму для ввода данных некоторых коллег в таблицу. Тем не менее, значение моих объектов пусто, когда я запускаю код. Кто-нибудь может дать мне несколько советов по поводу моего кода для имени персонала в качестве примера?

Private Sub txtstaffname_Change()
    staff_name = txtstaffname.Value
End Sub
_________________________________________________________________________    

Private Sub Done_Click()

'Updat Maintenance Sheet'
Application.EnableEvents = False

r = Application.CountA(Range("A:A")) + 1

With Worksheets("For Maintenance Propose")
    .Cells(1, r).Value = staff_name
End With

Application.EnableEvents = True

End Sub

Это фото, показывающее дизайн

enter image description here

1 Ответ

0 голосов
/ 06 сентября 2018

Как сказано в моем комментарии, вы должны использовать Option Explicit, тогда staff_name не будет определяться локально в каждой подпрограмме. Я предполагаю, что код, который вы разместили, находится в модуле для пользовательской формы. Тогда следующие изменения могут исправить ваш код

Option Explicit

Dim staff_name as string

Private Sub txtstaffname_Change()
    staff_name = txtstaffname.Value
End Sub
_________________________________________________________________________    

Private Sub Done_Click()
dim r as long
'Updat Maintenance Sheet'
Application.EnableEvents = False

r = Application.CountA(Range("A:A")) + 1

With Worksheets("For Maintenance Propose")
    .Cells(1, r).Value = staff_name
End With

Application.EnableEvents = True

End Sub

PS Я также думаю, что вы действительно хотели бы заполнить ячейки, идущие вниз по столбцу, так что это должно быть

.Cells(r,1).Value = staff_name
...