Как обрезать заголовки в таблице с кодом VBA - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь урезать заголовки таблицы с помощью кода VBA, потому что некоторые из них имеют пробелы впереди, которые меняются каждый месяц, что затрудняет кодирование.

Когда я разбиваю код изапускайте его шаг за шагом, он работает нормально, но когда я запускаю весь макрос, он удаляет некоторые мои заголовки и заменяет их информацией из другой строки листа или просто «столбец 1», «столбец 2» и т. д.

Я полагаю, что мне не хватает некоторой ссылки на код, когда она вызывает выбор (" & .Address & ")?

Он заменяет заголовки листа, где активна ячейка.(Если это была последняя ячейка, по которой щелкнули перед запуском макроса).

Я пробовал просто использовать функцию Trim , но поскольку это массив для диапазона, он не 't, и кто-то предложил использовать функцию « оценить ».

Я также пытался использовать функцию обрезки в качестве функции WorksheetFunction, но она выдала мне ошибку «Ошибка времени выполнения»13 "Несоответствие типов". Это было в следующем коде:

    With wsDispoData.ListObjects("Table_DispoData").HeaderRowRange.EntireRow
        .Value = WorksheetFunction.Trim(.Value)
    End With

Это текущий код, который я использую, который заменяет неправильно.

Trim headings
    With wsDispoData.ListObjects("Table_DispoData").HeaderRowRange.EntireRow
        .Value = Evaluate("IF(ISTEXT(" & .Address & "),TRIM(" & .Address & "),REPT(" & .Address & ",1))")
    End With

Ожидаемые результаты должны быть дляПример:

Текущие заголовки: "SOH" и "Compo"

Подрезаны: "SOH" и "Compo"

1 Ответ

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

Я бы просто перечислил строку заголовка и проверил каждое значение

Dim Cell As Range
For Each Cell In wsDispoData.ListObjects("Table_DispoData").HeaderRowRange
    Cell.value = WorksheetFunction.Trim(Cell.value)
Next Cell
...