Excel(跨工作簿)

时间:2012-05-30 20:45:38

标签: excel excel-vba vba

我有三本工作簿,A,B和C.

A有一个名称列表,表明我应该从B移到C。

我在A中写一个宏来做这件事。我只想打开/引用B和C,并且能够扫描A中的所有内容以防止B中的所有内容,并且每次遇到匹配时,都会从B中删除行并附加到C的末尾。

我遇到的问题只是让工作簿正确打开/引用,更不用说其他一切了

例如我正在尝试使用C来使用C中的最后一行,但这给我带来了麻烦

path = "C:\MyPath\"

bBath= path & "B.xls"
cPath= path & "C.xls"

Set bBook = Application.Workbooks.Open(bPath)
Set cBook = Application.Workbooks.Open(cPath)

k = 1
While cBook.Sheets("SomeSheetName").Row(k, 1) <> ""
    k = k + 1
Wend

2 个答案:

答案 0 :(得分:1)

替换

k = 1
While cBook.Sheets("SomeSheetName").Row(k, 1) <> ""
    k = k + 1
Wend

使用

k = cBook.Sheets("SomeSheetName").UsedRange.SpecialCells(xlCellTypeLastCell).Row

这将为您提供工作表上有数据/格式的最后一行。

如果您需要列是绝对列,则可以执行此操作

k = cBook.Sheets("SomeSheetName").Cells(cBook.Sheets("SomeSheetName").Rows.Count,1).End(xlUp).Row
例如,

将为您提供第1列中使用的最后一行。将B更改为1,更改为2,依此类推。 (你可以把它清理一下,这样更容易阅读)

答案 1 :(得分:1)

将行(k,1)更改为单元格(k,1)。