0
我有2个工作表,产品组和数据库:vba更新单元格与数据验证?
我的表,产品类别有一个布局如下图所示:
A4
A5 {Button}
A6
A7
A8
用户值可以开始添加列A4。这个列表的含义可以扩展到A4-A8或A4到A100。
我创建了一个按钮,允许用户运行宏,他们在A列更新的值后
该宏应该从A4插入值,以最后一次使用一行到细胞T7我的数据验证在我的数据库表上。
这里是我的代码:
Sub button()
Dim lastRow As Long
lastRow = ThisWorkbook.Worksheets("Product Groups").Range("A4" & Rows.Count).End(xlUp).Row
Dim ws As Worksheet
Dim ws2 As Worksheet
Dim range1 As Range, rng As Range
'change Sheet1 to suit
Set ws = ThisWorkbook.Worksheets("Database")
Set ws2 = ThisWorkbook.Worksheets("Product Groups")
Set rng = ws.Range("T7")
Set range1 = ws2.Range("A1:A" & lastRow)
With rng.Validation
.Delete 'delete previous validation
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="='" & ws2.Name & "'!" & range1.Address
End With
End Sub
出于某种原因,我得到这一行的错误:
lastRow = ThisWorkbook.Worksheets("Product Groups").Range("A4" & Rows.Count).End(xlUp).Row
应用程序定义或对象未定义的错误。
请有人可以告诉我哪里出了问题?感谢
尝试'LASTROW = ThisWorkbook.Worksheets(“产品组”的一个可能的重构一起使用,显示它的答案被赋予).Range(“A4”&ThisWorkbook.Worksheets(“Product Groups”).Rows.Count).End(xlUp).Row' ...(您可能不需要第二个“ThisWorkbook.”,但您需要工作表。) – BruceWayne
差不多;它是'LastRow = ThisWorkbook.Worksheets(“产品组”)。范围(“A”和ThisWorkbook.Worksheets(“产品组”).Rows.count).End(xlUp).row' – user3598756
@ user3598756击败我。您不能使用Range(“A4”)定义第4行,然后尝试重新定义该行。您只需使用Range的Column A部分并使用'.Rows.Count'定义行部分。 – SalvadorVayshun