Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将整个图纸乘以2_Excel_Vba - Fatal编程技术网

Excel 将整个图纸乘以2

Excel 将整个图纸乘以2,excel,vba,Excel,Vba,我试图将整个工作表乘以2,但我得到了一个错误。任何帮助都将不胜感激 谢谢 Hayk下面的代码将ActiveCell乘以2。请注意,这不会使整个图纸相乘 Sub Test() Dim rngData As Range Set rngData = ThisWorkbook.Worksheets.ActiveCell rngData = Evaluate(rngData.Address & "*2") End Sub 如果您真的想将工作表中的所有值乘以2,我会考虑

我试图将整个工作表乘以2,但我得到了一个错误。任何帮助都将不胜感激

谢谢
Hayk

下面的代码将
ActiveCell
乘以2。请注意,这不会使整个图纸相乘

Sub Test()

    Dim rngData As Range

    Set rngData = ThisWorkbook.Worksheets.ActiveCell
    rngData = Evaluate(rngData.Address & "*2")
End Sub

如果您真的想将工作表中的所有值乘以2,我会考虑在一个范围内循环。

这里有一种稍微不太传统的方法,但您可以使用
特殊粘贴…>乘法功能。例如,在本例中,我将
2
放在单元格
A17
中,并将乘法器应用于我的
A1:F15
范围。以下是以编程方式显示的情况:

Sub Test()
    Dim rngData As Range
    Set rngData = ActiveCell
    rngData = Evaluate(rngData * 2)
End Sub

这可能不是你的用例的一个好方法,但是如果你只需要手动将你的乘法器粘贴到一个范围内,你可能甚至不需要宏。

尝试一下:

Sub MultiplyAll()
    Range("A17").Select 'select the multiplier from cell A17
    Application.CutCopyMode = False
    Selection.Copy 'capture the multiplier "2" onto the clipboard
    Range("A1:F15").Select 'select the range that will be multiplied
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
        SkipBlanks:=False, Transpose:=False
End Sub
它将工作表中的所有数值常量单元格乘以2。它将忽略:

  • 空单元格
  • 文本单元格
  • 公式单元格

  • @dwirony-
    此工作簿。工作表(“Sheet1”)。ActiveCell
    引发错误。这是因为
    ActiveCell
    已经隐式地包含了
    ThisWorkbook.Worksheets(“Sheet1”)
    (假设
    Sheet1
    是activesheet?)最好这样做,因为这会运行在整个电子表格上,所以在开始时将计算转换为手动,并在屏幕更新时设置为false会以任何可测量的方式帮助性能吗?
    Sub MultiplyByTwo()
        Dim r As Range, rng As Range
    
        On Error Resume Next
            Set rng = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlNumbers)
        On Error GoTo 0
    
        If rng Is Nothing Then Exit Sub
    
        For Each r In rng
            r.Value = 2 * r.Value
        Next r
    End Sub