首页 > 解决方案 > 有多个数据表时如何使用VBA修改所选Excel数据表中的记录

问题描述

我有一个数据输入表单和多个名为 Table1 和 Table2 的数据表。我想使用数据输入表单修改所选数据表中特定行中的数据。在数据输入表单中,有两个按钮,分别称为 SAVE 和 MODIFY 按钮。首先有一个选项可以选择我要保存数据的表。然后我点击修改按钮,它要求我们输入序列号进行修改。当我在选定的数据表中输入特定行的序列号时,该特定行的所有详细信息应显示在数据输入表单上,以便使用“保存”按钮将其修改并保存到同一行。但它给出了一个错误,提到“找不到记录”并且它无法检测到数据表的选择。下面给出了我用于修改按钮的 VBA 代码。请先生帮我解决这个问题。

Sub ModifyRecord()
将 shTable 调暗为工作表 将 shForm 调暗为工作表 将
iCurrentRow 调暗为整数
将 sTableName 调暗为字符串

Set shForm = ThisWorkbook.Sheets("Form")    
sTableName = shForm.Range("H7").Value    
Set shTable = ThisWorkbook.Sheets(sTableName)    
Dim irow As Long
Dim iSerial As Long
iSerial = Application.InputBox("Please enter Serial Number to make 
modification.", "Modify", , , , , , 1)

On Error Resume Next    
irow = Application.WorksheetFunction.IfError _
(Application.WorksheetFunction.Match(iSerial, 
Sheets("sTableName").Range("A:A"), 0), 0)

On Error GoTo 0

If irow = 0 Then   
    MsgBox "No record found.", vbOKOnly + vbCritical, "No Record"
    Exit Sub        
End If  
Sheets("Form").Range("L1").Value = irow
Sheets("Form").Range("M1").Value = iSerial    
Sheets("Form").Range("H9").Value = Sheets("sTableName").Cells(irow, _
2).Value    
Sheets("Form").Range("H11").Value = Sheets("sTableName").Cells(irow, _
3).Value  
Sheets("Form").Range("H13").Value = Sheets("sTableName").Cells(irow, _
4).Value    
Sheets("Form").Range("H15").Value = Sheets("sTableName").Cells(irow, _
5).Value   
Sheets("Form").Range("H17").Value = Sheets("sTableName").Cells(irow, _
6).Value    
Sheets("Form").Range("H19").Value = Sheets("sTableName").Cells(irow, _
7).Value     
Sheets("Form").Range("H21").Value = Sheets("sTableName").Cells(irow, _
8).Value    
Sheets("Form").Range("H23").Value = Sheets("sTableName").Cells(irow, _
9).Value  

结束子

标签: excel

解决方案


推荐阅读