Visual Basic Excelmacros

我想在Excel中有一个macros。 macros应该从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。

你不需要使用函数只是使用这些subs:

以下可以重复显示所有的* 列A *值:

 Sub example() For a = 1 To 65563 Cells(a, 1).Value = Cells(a, 1).Value * 5 Next a End Sub 

考虑到65563 CELLS不是一个好主意,我build议你使用子波纹pipe来统计行数并减less内存使用量。

 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 

这就是你要求的,但它是一个子,因为你不能使用函数编辑工作表的值

  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 

你实际上并不需要一个macros,但是如果你想使用VBA,你可以避免耗时的循环

1 Manual Method using Paste Special - Multiply

从walkenbach

要将值的范围增加5倍:

  1. input5到任何空白单元格。
  2. select单元格,然后select编辑,复制。
  3. select值的范围(例如列A),然后select编辑,select性粘贴。
  4. selectMultiply选项,然后单击确定。
  5. 删除包含5的单元格

2 Code using Paste Special - Multiply

使用来自vbax的 Zack Barresse的代码 – 稍作修改

该代码使用用户input的乘数来更新所选范围

 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 

为什么不通过乘以你select的数字来使它更通用一点:

 Sub MultiplyByFive() Dim cl As Range For Each cl In Selection cl = cl * 5 Next cl End Sub 

这样你就避免了65536硬编码。