【问题标题】:Excel/VBA uncheck checkboxes if mandatory field is empty如果必填字段为空,则 Excel/VBA 取消选中复选框
【发布时间】:2017-09-10 12:06:33
【问题描述】:

我编写了一个函数,它为文档中的每个复选框检查字段 C140 是否为空,如果然后取消选中同一行中的复选框。

Sub MarkCheckBoxes()

Dim chk As CheckBox
Dim ws As Worksheet

Set ws = ActiveSheet

For Each chk In ws.CheckBoxes
    If ws.Range("C140").Value = "" Then
        chk.Value = False
    Else
        chk.Value = True
    End If
Next chk

End Sub

现在我想改变它,为每一行检查必填字段是否为空,如果然后取消选中与空字段相同的行中的复选框,我还需要干净的行颜色:

EntireRow.Interior.ColorIndex = xlColorIndexNone

当我将 range("c140") 更改为 range("c140:c150") 时,我遇到了错误不匹配..

Ralph 给我第一部分的答案,但现在我有另一个问题。

我想做一些功能,让我检查第 149 行中的任何字段是否为文本“强制然后检查下面的行是否为空,如果然后取消选中。所以我尝试了这样的事情:

如果 ws.Rows("149") = "强制" 则 如果 ws.Range("C" & chk.TopLeftCell.Row).Value 但是我不知道如果要检查每列中的值如何写第二个

【问题讨论】:

    标签: vba excel checkbox


    【解决方案1】:

    在 If 语句中使用 Worksheet 的 Cells 属性而不是 Range:

    If ws.Cells(3, chk.TopLeftCell).Value = ""
    

    【讨论】:

      【解决方案2】:

      我相信您可能正在寻找这样的东西:

      Sub MarkCheckBoxes()
      
      Dim chk As CheckBox
      Dim ws As Worksheet
      
      Set ws = ActiveSheet
      
      For Each chk In ws.CheckBoxes
          If ws.Range("C" & chk.TopLeftCell.Row).Value = vbNullString Then
              chk.Value = False
          Else
              chk.Value = True
          End If
      Next chk
      
      End Sub
      

      说明: 我仅将C140 的行更改为C + 复选框所在的行号。我希望这就是您一直在寻找的。​​p>

      关于您最初尝试将Range("C140")(这是一个单元格)更改为C140:C150 等一系列单元格:当然这行不通。这就像请将此苹果与这 10 个苹果进行比较。作为回报,您将获得 10 个答案,其中一些可能是正确的,而另一些可能对于您的 If 子句可能是错误的。 VBA 不知道要采用turefalse 中的哪一个。

      【讨论】:

      • 谢谢!你能再解释一下如何改变整行的颜色吗?当我尝试 rn.EntireRow.Interior.ColorIndex = xlColorIndexNone 与 Set rn = ws.Cells("C" & chk.TopLeftCell.Row) 或 chk.EntireRow.Interior.ColorIndex = xlColorIndexNone 我得到了错误。
      • 什么是rn?这是从哪里来的?它应该是ws.Range("C" & chk.TopLeftCell.Row).EntireRow.Interior.ColorIndex = xlColorIndexNonews.Range("C" & chk.TopLeftCell.Row).EntireRow.Interior.ColorIndex = 36(使行变黄)。
      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多