Поиск / замена в одной колонке, влияющая на весь лист

Вы можете записать InverseBooleanToVisibilityConverter.

1
задан user3574547 19 January 2019 в 22:06
поделиться

2 ответа

Поиск & amp; Заменить в столбце

  • Всегда использовать Option Explicit, чтобы быстрее узнать о возникающих ошибках и быть вынужденным объявлять переменные.
  • Вы всегда должны объявлять свои строки как Long.
  • Когда вы используете оператор With, вы используете точки для всего, даже для .Range, .Cells и т. Д. Код в этом случае может работать (ActiveSheet) в любом случае, но это неверно.
  • Избегайте использования ActiveSheet, используйте имя рабочего листа.
  • Избегайте использования выбора. Об этом много постов (статей).
  • Когда вы используете ячейки без чего-либо, это относится ко всем ячейкам на рабочем листе.
  • Первым делом в функции замены (функция поиска) является диапазон, в котором вы собираетесь заменить (поиск, поиск). Это может быть столбец, это может быть ячейка или просто меньший диапазон.

Код

Sub SROneColumn()

    Const cVntLRColumn As Variant = "A"  ' Last Row Column Letter/Number
    Const cVntCriteria As Variant = "L"  ' Criteria Column Letter/Number
    Const cLngFirstRow As Long = 2       ' First Row Number
    Const cStrReplace As String = "True" ' Replace String

    Dim lngLastRow As Long        ' Last Row Number
    Dim strSelectRange As String  ' Select Range Address

    With ActiveSheet
        lngLastRow = .Cells(.Rows.Count, cVntLRColumn).End(xlUp).Row
        strSelectRange = .Range(.Cells(cLngFirstRow, cVntCriteria), _
                .Cells(lngLastRow, cVntCriteria)).Address
        .Range(strSelectRange).Replace What:="*", Replacement:=cStrReplace, _
                LookAt:=xlPart, SearchOrder:=xlByColumns, MatchCase:=False
    End With

End Sub

Интересный способ использования рабочего листа без использования объектной переменной:

Sub SRSheet()

    Const cStrSheet As Variant = "Sheet1"   ' Worksheet Name/Index

    With ThisWorkbook.Worksheets(cStrSheet)


    End With

End Sub
0
ответ дан VBasic2008 19 January 2019 в 22:06
поделиться
Range(strSelectRange).Select

выбирает диапазон (хотя лучше всего избегать выбора ), но тогда ваш код ничего не делает с этим выбором, потому что Cells - весь лист.

Может быть, вы хотите вместо:

  Range(strSelectRange).Replace What:="*", Replacement:="True", LookAt:=xlPart
0
ответ дан pnuts 19 January 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: