我试图根据数据输入表中的名称在表中查找一行,然后找到该行中第一个打开的单元格,最后将数据输入表中的日期复制到该单元格中。
我的代码将选择该行以及定义行中的第一个空单元格。
我无法让它同时完成这两件事。它返回 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 线。
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