Как я могу применить функцию удаления алфавита на активной петле листа? - PullRequest
0 голосов
/ 30 октября 2019
Function StripChar(Txt As String) As String
With CreateObject("VBScript.RegExp")
.Global = True
.Pattern = "\D"
StripChar = .Replace(Txt, "")
End With
End Function

Итак, я пытаюсь применить эту функцию к нижнему диапазону через петли через ячейки

Sub Alphabetremove()
    Dim ws As Worksheet
    Dim Lastrow As Integer
    Set ws = ActiveSheet
    Lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    Range("F2:F" & Lastrow).Select
    With Selection
    .Value = StripChar(.Value)
End With
End Sub

1 Ответ

1 голос
/ 30 октября 2019

Проблема в том, что вы не можете запустить функцию .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 и примените это ко всему вашему коду.

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