Excel vba使用数据验证更新单元格?

Excel vba使用数据验证更新单元格?,excel,vba,validation,Excel,Vba,Validation,我有2个工作表、产品组和数据库: 我的工作表、产品组的布局如下所示: A4 A5 {Button} A6 A7 A8 用户可以在A4列之后添加值。这意味着该列表可以扩展到A4-A8或A4到A100 我创建了一个按钮,允许用户在更新a列中的值后运行宏 此宏应将A4到上次使用行的值插入数据库工作表T7单元格中的数据验证中 这是我的密码: Sub button() Dim lastRow As Long lastRow = ThisWorkbook.Worksheets("Product

我有2个工作表、产品组和数据库:

我的工作表、产品组的布局如下所示:

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
应用程序未定义或对象未定义错误


有人能告诉我哪里出了问题吗?谢谢

在评论中给出了解决方案

我使用的答案再次显示了这一点,并可能对代码进行重构

Option Explicit

Sub button()
    Dim range1 As Range

    With ThisWorkbook.Worksheets("Product Groups")
        Set range1 = .Range("A1", .Cells(.Rows.count, 1).End(xlUp))
    End With

    With ThisWorkbook.Worksheets("Database").Range("T7").Validation
        .Delete 'delete previous validation
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:="='Product Groups!" & range1.Address
    End With
End Sub

尝试
lastRow=thiswook.Worksheets(“产品组”).Range(“A4”和thiswook.Worksheets(“产品组”).Rows.Count)。End(xlUp)。Row
…(您可能不需要第二个
thiswook.
,但您将需要该工作表。)差不多;这是
LastRow=thiswoolk.Worksheets(“产品组”).Range(“A”和thiswoolk.Worksheets(“产品组”).Rows.count)。End(xlUp)。row
@user3598756击败了我。不能使用
范围(“A4”)
定义第4行,然后尝试重新定义该行。您只需使用列A部分
范围
,并使用
.Rows.Count
.Princess.Bell定义行部分,您还可以找到时间对您之前问题的答案进行反馈!