Умножение всего листа на 2 - PullRequest
       11

Умножение всего листа на 2

0 голосов
/ 21 декабря 2018
Sub Test()

    Dim rngData As Range

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

Я пытаюсь умножить весь лист на 2, но получаю ошибку.Любая помощь будет высоко оценен.

Спасибо, Айк

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Вот немного менее традиционный способ решения этой проблемы, но вы можете использовать функцию Paste Special... > Multiply.Например, для этого примера я поместил 2 в ячейку A17 и применил множитель к моему диапазону A1:F15.Вот как это выглядит программно:

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

Это может быть не лучшим подходом для вашего случая использования, но учтите, что вам может даже не понадобиться макрос, если вам просто нужно вставить свой множитель в диапазон вручную.

0 голосов
/ 22 декабря 2018

Попробуйте:

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

Умножает все числовые постоянные ячейки на листе на 2 .Он игнорирует:

  1. пустые ячейки
  2. текстовые ячейки
  3. ячейки формулы
0 голосов
/ 21 декабря 2018

Ниже умножим ActiveCell на два.Обратите внимание, что это не умножает весь лист!

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

Если вы действительно хотите умножить все значения на рабочем листе на 2, я бы посмотрел цикл в диапазоне.

...