按钮相乘范围数据和按钮消除此相乘

时间:2019-02-21 09:17:42

标签: excel vba

我有两个按钮,“乘以0”和“显示原始值”。

对于“乘以0”按钮,我有以下代码,效果很好。我需要帮助的是第二个按钮的代码,该代码可使范围乘以0返回其原始数字。

Public Sub MultiplyByZero()

Dim rngData As Range

Set rngData = ThisWorkbook.Worksheets("Input Sheet LC").Range("I76:O103")
rngData = Evaluate(rngData.Address & "*0")

End Sub

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

以下代码可能会对您有所帮助。

  1. 声明一个名为 arr 的全局变量,以便您可以从任何地方调用它-将变量作为变体
  2. 在您乘以零之前,我们将值存储在该数组中- arr = .Range(“ A1:A5”)
  3. 我们随时可以将值取回- .Range(“ B1:B5”)。Value = arr

    Option Explicit
    Dim arr As Variant
    
    Public Sub MultiplyByZero()
    
        Dim rngData As Range
        Dim cell As Range
    
        With ThisWorkbook.Worksheets("Sheet1")
    
            arr = ""
    
            Set rngData = .Range("A1:A5")
    
            arr = .Range("A1:A5")
    
            rngData = Evaluate(rngData.Address & "*0")
    
        End With
    
    End Sub
    
    Public Sub RestoreValues()
    
        With ThisWorkbook.Worksheets("Sheet1")
    
            If Not IsEmpty(arr)=True Then
                .Range("A1:A5").Value = arr
            Else
                MsgBox "Array is empty."
            End If
    
        End With
    
    End Sub
    

答案 1 :(得分:0)

使用公式代替常量:

Public Sub MultiplyByZero()
    Dim rngData As Range, rngWork AS Range

    Set rngData = ThisWorkbook.Worksheets("Input Sheet LC").Range("I76:O103")
    For Each rngWork In rngData.Cells
        With rngWork
            If .HasFormula Then
                If Right(.Formula,2) <> "*0" Then .Formula = .Formula & "*0"
            Else
                .Formula = "=" & .Value & "*0"
            End If
        End With
    Next rngWork
End Sub

Public Sub DivideByZero()
    Dim rngData As Range, rngWork AS Range

    Set rngData = ThisWorkbook.Worksheets("Input Sheet LC").Range("I76:O103")
    For Each rngWork In rngData.Cells
        With rngWork
            If .HasFormula Then
                If Right(.Formula,2) = "*0" Then .Formula = Mid(.Formula, 1, Len(.Formula)-2)
            End If
        End With
    Next rngWork
End Sub

这会将10更改为=10*0,然后又更改为=10