0

連続していない列で次のコードを実行する必要があります。別のコードに対してこれを行う方法については、ここにコードが投稿されています。 Excel の VBA コードにループを追加する

私は同じことをする必要があります:

Sub CleanAll()
    Dim rng As Range

    For Each rng In Sheets("Sheet1").Range("D2:D100").Cells 'adjust sheetname and range   accordingly
        rng.Value = TextOnly(rng.Value)
    Next
End Sub

私の失敗した努力

Sub CleanAll(sColRange As String)
    Dim rng As Range

    For Each rng In Sheets("Sheet1").Range(sColRange).Cells 'adjust sheetname and range accordingly
        rng.Value = TextOnly(rng.Value)
    Next
End Sub

次のように使用します。

Call CleanAll("B2")
Call CleanAll("H2")

ありがとう

編集

上記は以下を呼び出します

Function TextOnly(strSource As String) As String
    Dim i As Integer
    Dim strResult As String

    For i = 1 To Len(strSource)
        Select Case Asc(Mid(strSource, i, 1))
            Case 48 To 57, 65 To 90, 97 To 122: 'include 32 if you want to include space
                strResult = strResult & Mid(strSource, i, 1)
        End Select
    Next
    AlphaNumericOnly = strResult
End Function
4

1 に答える 1

2

サブルーチンに簡単に範囲を渡さないのはなぜですか?

Sub CleanAll(range as Range)
    Dim rng As Range

    For Each rng In range.Cells 
        rng.Value = TextOnly(rng.Value)
    Next
End Sub

その後、あなたはそれを呼び出すことができます

CleanAll(Sheets("Sheet1").Range("A1:A100"))
于 2013-04-27T01:43:30.373 に答える