【问题标题】:Matching ranges with a checkbox用复选框匹配范围
【发布时间】:2014-12-30 08:42:53
【问题描述】:

我认为这很简单,但我是 VBA 新手。我有一行我希望为 0 或来自不同行的值(匹配长度和位置)。我有一个计算的财务报表行,我想根据复选框将其带入不同的财务报表或为空。这是我目前所拥有的,但它只返回整个范围的 E111,我想要 E60=E111、F60=F111 等。

Private Sub CheckBox2_Click()
    `With Worksheets("Project Model").Range("E60:KX60")
        `If CheckBox2.Value = True Then .Value = 0
        `If CheckBox2.Value = False Then .Value = ("E111)
    End With
End Sub

有人知道快速解决方法吗?

谢谢!!

【问题讨论】:

    标签: vba checkbox


    【解决方案1】:

    尝试以下方法:

    With Worksheets("Project Model").Range("E60:KX60")
        If (CheckBox2.Value = True) Then
            .Value = 0
        Else
            .Value = Worksheets("Project Model").Range("E111:KX111").Value
        End If
    End With
    

    另外,请注意,如果您的 CheckBox 位于“项目模型”工作表本身,则无需在代码中按名称显式指定工作表(如果您稍后更改工作表名称,则会导致错误无需更新代码)。

    【讨论】:

      【解决方案2】:

      我相信这就是您正在寻找的。 CheckBox 与您的数据在同一页面上。

      CheckBox - 选中:
      在 E60:KX60 范围内显示“0”。

      复选框 - 未选中:
      对于 E60:KX60 范围,显示列的字母,后跟“111”。
      前任。 “E111”

      Private Sub CheckBox2_Click()
          Dim i As Integer
          Dim col As String
      
          If CheckBox2.Value = True Then Range("E60:KX60").Value = 0
      
          If CheckBox2.Value = False Then
              'For Ranges E to KX
              For i = 5 To 310
                  'Get Column Address
                  col = Cells(60, i).address(False, False)
                  'Remove "60" from Column Address
                  col = Left(col, Len(col) - 2)
                  'Display column and "111"
                  Cells(60, i).Value = col & "111"
              Next
          End If
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-04
        • 2018-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-05
        • 1970-01-01
        相关资源
        最近更新 更多