动态范围参考中的类型不匹配

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

我试图根据数据输入表中的名称在表中查找一行,然后找到该行中第一个打开的单元格,最后将数据输入表中的日期复制到该单元格中。

我的代码将选择该行以及定义行中的第一个空单元格。

我无法让它同时完成这两件事。它返回 cl 行的“类型不匹配”错误。

Sub TestModule2()
 
    Dim sh As Worksheet
    Dim rw As Object
    Dim clm As Object
    Dim cl As Object
 
    Set sh = ThisWorkbook.Sheets("database")
    Set rw = sh.Range("A:A").Find(ThisWorkbook.Sheets("data input").Listobjects("Table1").Range(2, 1).Value)
    Set clm = sh.Range("Table35").Rows.Find(What:="", LookIn:=xlValues, LookAt:=xlWhole)
    Set cl = sh.Listobjects("Table35").Range(rw, clm)
 
    cl.Select
 
End Sub

我正在使用

cl.Select
进行测试,下一个挑战是找出制作方法:

.value = ThisWorkbook.Sheets("data input").Range("B1")

我尝试更改 rw、cl 和 clm 的变量;使用

listObjects.ListRows
;保存/关闭/打开以尝试强制重置缓存。

我成功地分别运行了 rw 和 clm 线。

excel vba type-mismatch
1个回答
1
投票
  • rw
    是一个范围对象。
  • rw.EntireRow
    sh.Rows(rw.Row)
    是单元格
    rw
    的行范围对象。
  • 始终在
    LookIn:=..., LookAt:=...
    子句中使用
    Find
    参数。
Sub TestModule2()
    Dim sh As Worksheet
    Dim rw As Range
    Dim clm As Range
    Dim cl As Range
    Set sh = ThisWorkbook.Sheets("database")
    Set rw = sh.Range("A:A").Find(ThisWorkbook.Sheets("data input").ListObjects("Table1").Range(2, 1).Value, LookIn:=xlValues, LookAt:=xlWhole)
    If rw Is Nothing Then Exit Sub
    Set clm = rw.EntireRow.Find(What:="", LookIn:=xlValues, LookAt:=xlWhole)
    If clm Is Nothing Then Exit Sub
    clm.Value = ThisWorkbook.Sheets("data input").Range("B1").Value
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.