希望您身体健康。
我有一个数据记录文件来记录采购订单,然后付款。我使用具有许多不同公式的excel文件来最大程度地提高操作的自动化程度。但是它变得越来越重,不可能再使用它了。
因此,我产生了删除所有公式并将其仅放在第一行的想法。现在,我希望excel在每次运行命令时都从第一行复制这些公式,然后在所需的行过去以更新记录,并立即将其转换为值。这将使所有数据保持自动化,并减少处理时间。
我在这里使用的脚本正在工作,但有一点我必须使用查找功能。它应在所选工作表的B列中找到所需的值,并选择找到的单元格作为结果。选择之后,它将偏移到所需的列以继续其他步骤。
Sub find()
Sample Sheets("PO").Range("a1"), Sheets("PO").Range("b:b")
End Sub
完整的脚本是
Sub Macro4()
'
' Update the PO/WO detail with the effect of new payment entry and alsoupdate the corresponding in payment entry
'
' Keyboard Shortcut: Ctrl+j
'
ActiveCell.Offset(0, -16).Range("A1").Select
ActiveCell.FormulaR1C1 = "*"
ActiveCell.Offset(0, 7).Range("A1").Select
Selection.Copy
ActiveSheet.Previous.Select
Range("A1").Select
ActiveSheet.Paste
End Sub
Sub find()
Sample Sheets("PO").Range("a1"), Sheets("PO").Range("b:b")
End Sub
Sub Sample(FirstRange As Range, ListRange As Range)
Dim aCell As Range, bCell As Range, oRange As Range
Set oRange = ListRange.find(what:=FirstRange.Value, LookIn:=xlValues, _
lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
ActiveCell.Offset(0, 7).Range("A1").Select
ActiveCell.Offset(0, 10).Range("A1").Select
ActiveCell.FormulaR1C1 = "*"
Selection.End(xlUp).Select
Selection.End(xlToLeft).Select
ActiveCell.Offset(0, -1).Range("A1:B1").Select
ActiveCell.Activate
Selection.Copy
ActiveCell.Offset(0, 10).Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, -10).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, 10).Range("A1").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(0, -10).Range("A1").Select
ActiveSheet.Next.Select
Range("A1").Select
ActiveCell.Offset(0, 16).Range("A1:B1").Select
Application.CutCopyMode = False
Selection.Copy
Range("A1").Select
Selection.End(xlDown).Select
ActiveCell.Offset(0, 16).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(0, -16).Range("A1").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveCell.Offset(0, 17).Range("A1").Select
End Sub
请提出任何解决方案,
提前致谢
问候
嗯,如果我正确地理解了您的问题,那么您只需要一条select语句即可。
Set oRange = ListRange.find(what:=FirstRange.Value, LookIn:=xlValues, _
lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
oRange.Select
尽管您不在代码中的其他任何地方使用oRange变量,所以您可能会摆脱它。你写这段代码了吗?你懂这个了吗?这绝不是干净,优化,良好,易读或快速的代码……但是,如果它对您有用,那就不用管它了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句