我想在excel中有一个小宏。宏应该从 A1 中获取一个双数并将这个数字乘以 5 并将其返回到 A1 但我总是收到错误消息等。
到目前为止我的代码:
Function multiply()
Dim a As Long
For a = 1 To 65563
cell(a,3) = cell(a,3).Value * 5
next a
End Function
我以前没有使用过 VBA。
这可以满足您的要求,但它是一个子项,因为您无法使用函数编辑工作表值
Public Sub multiply()
On Error GoTo err
Dim val As Long
val = ActiveSheet.Cells(1, 1).Value
ActiveSheet.Cells(1, 1).Value = val * 5
Exit Sub
err:
End Sub
你不需要使用函数,只需使用这些潜艇:
您可以在下面对所有 *列 A *值进行多重播放:
Sub example()
For a = 1 To 65563
Cells(a, 1).Value = Cells(a, 1).Value * 5
Next a
End Sub
考虑到 65563 CELLS 不是一个好主意,我建议您使用下面的 sub 来计算行数并减少内存使用量。
Sub example2()
Dim countrows As Long
countrows = Range("A" & Rows.Count).End(xlUp).Row
For a = 1 To countrows
Cells(a, 1).Value = Cells(a, 1).Value * 5
Next a
End Sub
您实际上并不需要宏 - 尽管如果您确实想使用 VBA,您可以完全避免耗时的循环
1 Manual Method using Paste Special - Multiply
从沃肯巴赫
要将值范围增加 5 倍:
2 Code using Paste Special - Multiply
使用来自vbax的 Zack Barresse 的代码- 稍作修改
此代码使用用户输入的乘数更新所选范围
Sub psMultiply()
' http://www.vbaexpress.com/kb/getarticle.php?kb_id=47
Dim y As Long 'The multiplier value, user-defined
Dim x As Range 'Just a blank cell for variable
Dim z As Range 'Selection to work with
Set z = Selection
y = Application.InputBox("Enter selection multiplier:", _
Title:="Selection multiplier", Default:=10, Type:=1)
Set x = Cells(Rows.Count, "A").End(xlUp).Offset(1)
If y = 0 Then Exit Sub 'Cancel button will = 0, hence cancel
If x <> "" Then
Exit Sub
Else: x.Value = y
x.Copy
z.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply
Application.CutCopyMode = False 'Kill copy mode
End If
x.ClearContents 'Back to normal
End Sub
为什么不通过仅乘以您选择的数字使其更通用一点:
Sub MultiplyByFive()
Dim cl As Range
For Each cl In Selection
cl = cl * 5
Next cl
End Sub
这样可以避免65536
硬编码。