EXCEL / VBA:将布尔文本转换为检查

时间:2011-01-19 11:22:35

标签: excel vba excel-vba

我从访问excel中导出数据 布尔值和excel的某些列将它们显示为“true”或“false” 不太可读,所以我想将false值更改为空白,将真值更改为“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

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

任何人都知道为什么这不起作用?我不明白......

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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的另一种方法,两者都应该更快。虽然我会尊重查尔斯威廉姆斯,但这是否属实。

答案 2 :(得分:0)

更改
Select Case Cells(myRow, myCol)

Select Case Cells(myRow, myCol).text

现在有效。