Определите специальные символы в Excel на основе имен столбцов - PullRequest
0 голосов
/ 11 июля 2019

Я нашел код, который использует RegEx, чтобы определить, есть ли какие-либо специальные символы в столбце.Я только что узнал о RegEx сегодня, и я пытался редактировать этот код, но я столкнулся с 3 проблемами:

  1. Он использует "ActiveSheet", но я прочитал, что это может вызвать проблемы.Я хотел бы, чтобы он проверял только рабочий лист с именем "Consolidated." Я пытался Worksheets.("Consolidated").Range в строке For Each, но он не принимает его.
  2. Это относится ко всему рабочему листу.Я хотел бы знать, возможно ли применить его к столбцу на основе его имени (например, Имя), а не его диапазона, потому что столбцы не зафиксированы в консолидированной рабочей таблице.
  3. Также выделяется 1-я строка, в которой расположены имена столбцов (чего не должно быть).Я понимаю логику или рабочий процесс этого, но я новичок в VBA, поэтому я действительно хотел бы спросить руководство по этому вопросу.

Dim strPattern As String: strPattern = "[^a-z0-9-]"
Dim regEx As Object
Dim Cell As Range

Set regEx = CreateObject("VBScript.RegExp")
regEx.Global = True
regEx.IgnoreCase = True
regEx.Pattern = strPattern

For Each Cell In ActiveSheet.Range("A:Z") ' Define your own range here
    If strPattern <> "" Then              ' If the cell is not empty
        If regEx.Test(Cell.Value) Then    ' Check if there is a match
            Cell.Interior.ColorIndex = 6  ' If yes, change the background color
        End If
    End If
Next

1 Ответ

1 голос
/ 11 июля 2019

Я сделал Изменения.

  • Используйте функцию Find, чтобы найти столбец.для этого использовали cnum
  • Использовать Worksheets("Consolidated") без .
  • Передать найденный номер столбца в диапазон цикла

    Dim strPattern As String: strPattern = "[^a-z0-9-]"
    Dim regEx As Object
    Dim Cell As Range
    Dim cnum As Integer
    
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Global = True
    regEx.IgnoreCase = True
    regEx.Pattern = strPattern
    
    cnum = Worksheets("Consolidated").Range("A1:Z1").Find("First Name").Column 'column number to search in
    
    For Each Cell In Worksheets("Consolidated").Range(Cells(2, cnum), Cells(1000, cnum))
        If strPattern <> "" Then              ' If the cell is not empty
            If regEx.Test(Cell.Value) Then    ' Check if there is a match
                Cell.Interior.ColorIndex = 6  ' If yes, change the background color
            End If
        End If
    Next
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...