我无法理解以下功能正在做什么。
该功能本身可以将数据复制到工作表Sheet History
。但是,我不知道它是怎么做的?
Sub histFunc()
Dim Y As String
Y = "R" & Range("G7").Value
Sheets("Sheet History").Select
Range("h17").Select
Cells.Find(What:=Y, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Range(Selection, Selection.End(xlToRight)).Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Sheet Current").Select
End Sub
有关此宏如何运行的任何建议吗?
感谢您的回复!
答案 0 :(得分:1)
简而言之,代码会在工作表历史记录中搜索 G7 中的值,并用值仅替换该行的右侧部分,即删除引用或值。
获取单元格G7的值:
Y = "R" & Range("G7").Value
选择工作表工作表历史记录并选择单元格 H17 :
Sheets("Sheet History").Select
Range("h17").Select
在Find
上执行Cells
方法,表单中的所有单元格(请注意,如果没有给出参数,则它是当前工作表中所有单元格的范围):
Cells.Find(What:=Y, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
返回:
一个Range对象,表示找到该信息的第一个单元格。
有关详细信息,请参阅Find
documentation。
现在由于.Activate
,在找到值的位置选择(第一个)单元格。此选择扩展到行尾:
Range(Selection, Selection.End(xlToRight)).Select
然后CutCopyMode
停用了clear the clipboard after usage:
Application.CutCopyMode = False
现在复制并粘贴选定的单元格:
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
请注意,它们会粘贴在相同位置上的PasteSpecial
上,使用xlPasteValues
仅维护值,因此不会在其中包含任何公式和参考细胞
现在转到 Sheet Current :
Sheets("Sheet Current").Select
答案 1 :(得分:0)
经过一些清洁后,这可能是这样的(下面的解释):
Sub histFunc()
Dim FindRange As Range, _
LookForValue As String
LookForValue = "R" & Range("G7").Value
With Sheets("Sheet History")
.Range("h17").Activate
Set FindRange = .Cells.Find(What:=LookForValue, _
After:=ActiveCell, _
LookIn:=xlFormulas, _
LookAt:=xlPart, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
Application.CutCopyMode = False
Range(FindRange, FindRange.End(xlToRight)).Copy
FindRange.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, _
SkipBlanks:=False, _
Transpose:=False
End With
Application.CutCopyMode = False
Sheets("Sheet Current").Select
End Sub
我将Y
更改为LookForValue
以便更好地理解,并使用Range变量来引用Find
方法的结果。
所以这段代码,一步一步:
LookForValue
定义为"R" & Range("G7").Value
Sheet History