Проблема в том, что вы не можете запустить функцию .Value = StripChar(.Value)
одновременно в одном диапазоне (как вы пытались), но только в одной ячейке. Поэтому вам необходимо выполнить цикл от строки 2
до LastRow
и применить функцию к каждой отдельной ячейке.
Также обратите внимание, что переменные подсчета строк должны иметь тип Long
, поскольку в Excel больше строк, чем Integer
может справиться. На самом деле, я рекомендую всегда использовать Long
вместо Integer
, поскольку использование Integer
в VBA не дает никаких преимуществ.
Также, если вы установите для своей рабочей таблицы переменную ws
вам нужно использовать эту переменную для всех .Cells
и .Range
объектов, иначе это бесполезно.
Option Explicit
Public Sub Alphabetremove()
Dim ws As Worksheet
Set ws = ActiveSheet 'better define a workseet by name unless you use the code for multiple worksheets:
'Set ws = ThisWorkbook.Worksheets("MySheet")
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Dim Cell As Range
For Each Cell In ws.Range("F2:F" & LastRow)
Cell.Value = StripChar(Cell.Value)
Next Cell
End Sub
Наконец, я настоятельно рекомендую вам прочитать Как избежатьиспользуя Select в Excel VBA и примените это ко всему вашему коду.