我正在尝试从第2行复制所有带有值的单元格'coz第1行是标题/标题。但是,我的代码似乎选择了具有值的所有单元格。 :(
这是我要复制的代码:
Dim myData As Workbook
Set myData = Workbooks.Open("C:\Book2.xlsx")
Worksheets("Sheet1").Range("A2").Select
Worksheets("Sheet1").Range("A2").CurrentRegion.Copy
答案 0 :(得分:6)
即使你在代码中提到CurrentRegion
,我怀疑你不需要它,或者至少不打算以预期的方式使用它
让我们说我们的工作表看起来像这样。请注意Col F中的公式?
使用.Resize
的问题在于它将包含具有公式的单元格,即使它们返回空白值。
采用MacroMan的例子
Sub Sample()
With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1, .Columns.Count).Select
End With
End Sub
我试图从第2行复制所有带有值的单元格&co ;; coz第1行是标题/标题。
根据我的理解,您可以通过查找最后一行和最后一列,其中包含数据并复制该内容来实现您的目标。
我认为这就是你想要的?请注意LookIn:=xlValues
与.Find
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Dim lRow As Long, lCol As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlValues, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
lCol = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlValues, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
Set rng = .Range(.Cells(2, 1), .Cells(lRow, lCol))
Debug.Print rng.Address
rng.Copy
End With
End Sub
答案 1 :(得分:2)
您需要偏移并调整大小:
With Sheets("Sheet1").Range("A2").CurrentRegion.Offset(1, 0)
.Resize(.Rows.Count - 1, .Columns.Count).Copy
End With