EXCEL / VBA: преобразование логического текста в чеки - PullRequest
2 голосов
/ 19 января 2011

Я экспортировал данные из доступа в Excel.
Некоторые столбцы, в которых логические значения, и Excel отображают их как "true" или "false".
Не очень читаемые, поэтому я хочу изменить значения falseпустым, а истинные значения равны «х».

Вот код 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 ]

3 голосов
/ 20 января 2011

Использование .Text опасно, потому что он читает отформатированное значение ячейки, которое может быть ###, если пользователь уменьшил ширину столбца.Истина и Ложь обрабатываются как логические значения, а не как текст / строки, поэтому этот код работает:

Select Case ActiveSheet.Cells(j, k)
    Case True
       ActiveSheet.Cells(j, k) = "x"
    Case False
       ActiveSheet.Cells(j, k) = ""
 End Select
2 голосов
/ 21 января 2011
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, оба из которых должны быть быстрее. Хотя я отдам Чарльзу Уильямсу, правда ли это.

0 голосов
/ 19 января 2011

изменено с

Select Case Cells(myRow, myCol)

до

Select Case Cells(myRow, myCol).text

работает сейчас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...