我想在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合作过。
答案 0 :(得分:3)
这就是您所要求的,但它是一个子,因为您无法使用函数编辑工作表值
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
答案 1 :(得分:1)
你不需要使用函数只需使用这些子:
如果您可以多播所有* 列A * 值:
Sub example()
For a = 1 To 65563
Cells(a, 1).Value = Cells(a, 1).Value * 5
Next a
End Sub
考虑到65563 CELLS并不是一个好主意,我建议你使用sub below来计算行数并减少内存使用量。
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
答案 2 :(得分:1)
你实际上并不需要一个宏 - 虽然如果你想使用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
答案 3 :(得分:0)
为什么不通过乘以你选择的数字来使它更通用:
Sub MultiplyByFive()
Dim cl As Range
For Each cl In Selection
cl = cl * 5
Next cl
End Sub
这样就可以避免65536
硬编码。