2011-01-19 46 views
2

我已经将数据从访问导出到excel。
某些列的布尔值和excel显示为“true”或“false”。
不太可读,所以我想将false值更改为空白,并将真值更改为“x”。EXCEL/VBA:将布尔文本转换为检查

下面是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 

,但它不工作;当我一步一步地运行它时,两种情况都不会发生。
试图从“真”与“假”切换到真假,但它并没有改变任何东西。

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

回答

3

使用。文本是危险的,因为它会读取细胞,这可能是###,如果用户具有降低的列宽的格式的值。
真假布尔值,而不是文本/字符串所以这个代码工作的处理方式:两者

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

Select Case Cells(myRow, myCol) 

改为

现在
Select Case Cells(myRow, myCol).text 

作品。

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 

使用每个另一种方法,并没有选择案例,应该会更快。尽管我会推迟查尔斯威廉姆斯是否是这样。