Excel工作表中已更新数据,但未从下拉列表中检索名称

问题描述 投票:0回答:1

我是此Excel VBA的新手和初学者。我创建了一个VBA程序,用于注册和更新患者的信息或数据以进行健康检查。使用同一张纸(寄存器)存储注册和更新的数据,我能够基于下拉选择(cmbName)检索以前的注册/更新的数据,我从此站点引用了更新功能https://yodalearning.com/tutorials/update-delete-using-excel-vba-userform-vba-userform/。但是,在更新时,其余数据将更新并反映在相应的单元格中,但是不会检索名称,并且名称(C2)的单元格为空白。

这是我的代码(用于更新):

Private Sub BT_Update_Click()
Dim emptyRow As Long

If Me.cmbName.Value = "" Then
  MsgBox "Select name!", vbExclamation, "Name"
  Exit Sub
End If

Sheets("register").Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Transfer information
Cells(emptyRow, 1).Value = TB_RegNum.Value
Cells(emptyRow, 2).Value = TB_Date.Value

'Here where I failed to retrieve the name
'Cells(emptyRow, 3).Value = Me.cmbName.Value 'Name populated but new value not updated
'Cells(emptyRow, 3).Value = cmbName.Value    'Name populated but new value not updated
Cells(emptyRow, 4).Value = TB_NRIC.Value
Cells(emptyRow, 5).Value = TB_Address.Value
Cells(emptyRow, 6).Value = TB_Phone.Value
Cells(emptyRow, 7).Value = TB_Gender
Cells(emptyRow, 8).Value = TB_Race.Value
Cells(emptyRow, 9).Value = TB_Height.Value

下面是下拉菜单(cmbName):

Private Sub cmbName_Change()

If Me.cmbName.Value = "" Then
MsgBox "Select Name!", vbExclamation, "Name"
Exit Sub
End If

On Error Resume Next

Me.TB_Date.Value = WorksheetFunction.Index(Range("B2:B1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_RegNum.Value = WorksheetFunction.Index(Range("A2:A1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_NRIC.Value = WorksheetFunction.Index(Range("D2:D1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_Address.Value = WorksheetFunction.Index(Range("E2:E1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_Phone.Value = WorksheetFunction.Index(Range("F2:F1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_Gender.Value = WorksheetFunction.Index(Range("G2:G1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_Race.Value = WorksheetFunction.Index(Range("H2:H1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
Me.TB_Height.Value = WorksheetFunction.Index(Range("I2:I1000"), WorksheetFunction.Match(cmbName.Value, Range("C2:C1000"), 0))
excel vba
1个回答
0
投票
Private Sub BT_Update_Click()
Dim emptyRow As Long

If Me.cmbName.Value = "" Then
  MsgBox "Select name!", vbExclamation, "Name"
  Exit Sub
End If

Sheets("register").Activate
'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Transfer information
Cells(emptyRow, 1).Value = TB_RegNum.Value
Cells(emptyRow, 2).Value = TB_Date.Value
Cells(emptyRow, 4).Value = TB_NRIC.Value
Cells(emptyRow, 5).Value = TB_Address.Value
Cells(emptyRow, 6).Value = TB_Phone.Value
Cells(emptyRow, 7).Value = TB_Gender
Cells(emptyRow, 8).Value = TB_Race.Value
Cells(emptyRow, 9).Value = TB_Height.Value
'Bring this line to the bottom and it works!
Cells(emptyRow, 3).Value = cmbName.Value
© www.soinside.com 2019 - 2024. All rights reserved.