У меня есть многостраничная пользовательская форма, и я не могу получить данные, которые обновляются в форме для обновления в Excel.У меня есть код, который обновляет только строку 2, независимо от того, какую строку я редактирую в форме.Вот код, который я использую.
Dim currentrow As Long
Private Sub btnClose_Click()
Unload Me
End Sub
Private Sub frmDrgReg_Initialize()
Dim ws As Worksheet
Set ws = Worksheets(1)
Call resetForm
currentrow = 2
Me.txtRev = Cells(currentrow, 10)
Me.txtScale = Cells(currentrow, 11)
Me.txtProjDesc = Cells(currentrow, 12)
Me.txtFacDesc = Cells(currentrow, 13)
Me.txtItemDesc = Cells(currentrow, 14)
Me.txtType = Cells(currentrow, 15)
End Sub
Private Sub btnApply_Click()
answer = MsgBox("you are about to apply the changes", vbYesNo + vbQuestion, "Apply Changes")
If answer = vbYes Then
currentrow = 2
Cells(currentrow, 10) = Me.txtRev.Text
Cells(currentrow, 11) = Me.txtScale.Text
Cells(currentrow, 12) = txtProjDesc.Text
Cells(currentrow, 13) = txtFacDesc.Text
Cells(currentrow, 14) = txtItemDesc.Text
Cells(currentrow, 15) = txtType.Text
End If
End Sub
Private Sub ComboBox1_DropButtonClick()
Dim i As Long, LastRow As Long
LastRow = Sheets(1).Range("H" & Rows.Count).End(xlUp).Row
If Me.ComboBox1.ListCount = 0 Then
For i = 2 To LastRow
Me.ComboBox1.AddItem Sheets(1).Cells(i, "H").Value
Next i
End If
End Sub
В Sub btnApply_Click()
как я могу использовать цикл For Each, аналогичный тому, который я использовал в моей подпрограмме resetForm
Public Sub resetForm()
Dim ctl As Control
For Each ctl In frmDrgReg.Controls
If TypeName(ctl) = "TextBox" Then
ctl Value = ""
End If
Next ctl
frmDrgReg.ComboBox1.SetFocus
End Sub