我从访问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,但它没有改变任何东西。
任何人都知道为什么这不起作用?我不明白......
答案 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
现在有效。