Vba 如何使excel宏在活动行的单元格上运行?
我在尝试制作宏时遇到问题。我有一个电子表格,我关心a、Q、R、S和T列。首先,我选择Q列中的一行作为宏的初始activecell。我把Q列变成0。然后我把一个求和公式放在a列,对我所在行的R、S和T求和。 然后,我将值复制并粘贴到单元格的列上,使总和成为一个值。我把T列设为A列,然后把0放在R列和S列中 下面是使用record macro创建的初始宏,但它仅适用于我录制宏的行。我希望宏是这样的,当我对任何一行执行Ctrl-g时,它将针对该行运行Vba 如何使excel宏在活动行的单元格上运行?,vba,excel,Vba,Excel,我在尝试制作宏时遇到问题。我有一个电子表格,我关心a、Q、R、S和T列。首先,我选择Q列中的一行作为宏的初始activecell。我把Q列变成0。然后我把一个求和公式放在a列,对我所在行的R、S和T求和。 然后,我将值复制并粘贴到单元格的列上,使总和成为一个值。我把T列设为A列,然后把0放在R列和S列中 下面是使用record macro创建的初始宏,但它仅适用于我录制宏的行。我希望宏是这样的,当我对任何一行执行Ctrl-g时,它将针对该行运行 Sub Cashflow() ' ' Keyboa
Sub Cashflow()
'
' Keyboard Shortcut: Ctrl+g
'
ActiveCell.FormulaR1C1 = "0"
Range("A74").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[17]:RC[19])"
Range("A74").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A74").Select
Application.CutCopyMode = False
Range("T74").Select
ActiveCell.FormulaR1C1 = "=RC[-19]"
Range("R74").Select
ActiveCell.FormulaR1C1 = "0"
Range("S74").Select
ActiveCell.FormulaR1C1 = "0"
Range("T74").Select
End Sub
这是我试图修复它所做的,但它不起作用:
Sub Cashflow()
'
' Keyboard Shortcut: Ctrl+g
'
ActiveCell.FormulaR1C1 = "0"
Range(Cells(Selection.Row, 1)).Select
ActiveCell.FormulaR1C1 = "=SUM(RC[17]:RC[19])"
Range(Cells(Selection.Row, 1)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range(Cells(Selection.Row, 1)).Select
Application.CutCopyMode = False
Range(Cells(Selection.Row, 20)).Select
ActiveCell.FormulaR1C1 = "=RC[-19]"
Range(Cells(Selection.Row, 18)).Select
ActiveCell.FormulaR1C1 = "0"
Range(Cells(Selection.Row, 19))
ActiveCell.FormulaR1C1 = "0"
Range(Cells(Selection.Row, 20)).Select
End Sub
有什么想法吗
。选择和。激活。它会添加操作并减慢代码速度。你想怎么做就怎么做
With
块有助于减少重复键入的次数Sub Cashflow()
Dim rng As Range
Set rng = Selection
If rng.Count > 1 Then Exit Sub
rng = 0
With rng.Parent
With Cells(rng.Row, 1)
.FormulaR1C1 = "=SUM(RC[17]:RC[19])"
.Value = .Value
End With
.Cells(rng.Row, 1).FormulaR1C1 = "=RC[-19]"
.Range(.Cells(rng.Row, 18), .Cells(rng.Row, 19)).Value = 0
End With
End Sub
谢谢实际上,我刚刚找到了解决问题的方法,但您的代码要短得多,更简洁。编辑等待实际上上面的代码似乎没有从中间的列中得到正确的和或零,但是无论如何,谢谢!