VBA菜鸟的位,所以请不要在我的代码上畏缩太多。我有一个文件,其中的数据行总是在变化,我写了一个小函数来清除之前的条目,然后再完成其余的宏。我的目标是清除列H中的所有条目。我不想清除整个列,只是清除第6行和第6行。这很好用:
Range("H6", Range("H1048576").End(xlUp).Offset(1, 0)).Select
Selection.ClearContents
然后我想输入我在H6中为每列中包含数据位于A列中同一行的公式。我也在完成时将值粘贴到公式上。我这样做如下:
If Range("A7").Value <> "" Then
Range("H6").Select
Selection.AutoFill Destination:=Range("H6:H" & Range("A" & Rows.Count).End(xlUp).Row)
Range("H6", Range("H1048576").End(xlUp)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
以上一切正常。但是,我的问题是,如果我在前面插入一个列,由于绝对引用而中断。在这里搜索网站告诉我,我可以在第5行找到我的标题的价值如下:
Dim MyRng As Range
Set MyRng = Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole)
但是我对如何使用MyRng值完成其余代码感到茫然。我猜测我的回程方式是走到表格底部并跳到最后一个值来查找数据范围就是问题所在。
因此,一旦我在第5行找到带标题的列,如何将我的范围设置为数据下方的所有单元格?
感谢您的帮助!
答案 0 :(得分:1)
这样的事情:
Dim MyRng As Range
Dim lastRow As Long
With ActiveSheet
lastRow = .Cells(.Rows.count, "A").End(xlUp).Row
Set MyRng = .Range("5:5").Find("Column Title", LookIn:=xlValues, LookAt:=xlWhole)
c = MyRng.Column
Debug.Print c
If .Range("A7").Value <> "" Then
.Range("H6").Select
Selection.AutoFill Destination:=.Range(.Cells(6, c), .Cells(lastRow, c))
.Range("H6", .Range("H1048576").End(xlUp)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End With