【问题标题】:EXCEL/VBA: converting boolean text to checksEXCEL/VBA:将布尔文本转换为检查
【发布时间】:2011-01-21 06:24:43
【问题描述】:

我已将数据从访问权限导出到 excel。
布尔值的某些列,Excel 将它们显示为“真”或“假”。
不是很可读,所以我想将错误值更改为空白,将真实值更改为“x”。

这是我写的 VBA 代码:

Sub BoolToCheck()
Dim myRow As Integer
Dim myCol As Integer

For myCol = 7 To 38
    For myRow = 2 To 458

    Select Case Cells(myRow, myCol)
        Case "TRUE"
         Cells(myRow, myCol) = "x"
        Case "FALSE"
         Cells(myRow, myCol) = ""
    End Select

    DoEvents
    Next myRow
Next myCol
End Sub

但它不起作用;当我逐步运行它时,两种情况都不会发生。
尝试从“真”和“假”切换到真假,但它没有改变任何东西。

有人知道为什么这不起作用吗?没看懂……

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    使用 .Text 很危险,因为它会读取单元格的格式化值,如果用户减小了列宽,则该值可能是 ###。
    True 和 False 被处理为布尔值而不是文本/字符串,因此此代码有效:

    Select Case ActiveSheet.Cells(j, k)
        Case True
           ActiveSheet.Cells(j, k) = "x"
        Case False
           ActiveSheet.Cells(j, k) = ""
     End Select
    

    【讨论】:

      【解决方案2】:
      Sub MarkTrue()
      
          Dim rCell As Range
      
          For Each rCell In ActiveSheet.Range("G2:AR458").Cells
              If rCell.Value = True Then
                  rCell.Value = "X"
              ElseIf rCell.Value = False Then
                  rCell.ClearContents
              End If
          Next rCell
      
      End Sub
      

      另一种使用 For Each 和 no Select Case 的方法,这两种方法都应该更快。虽然我会听从查尔斯·威廉姆斯的意见是否属实。

      【讨论】:

        【解决方案3】:

        改成

        Select Case Cells(myRow, myCol)
        

        Select Case Cells(myRow, myCol).text
        

        现在可以使用了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-26
          • 2022-01-04
          • 1970-01-01
          相关资源
          最近更新 更多