1

A2、A4、A5、A6に「sa」のような特定のテキストが見つかったとしましょう。B2、B4、B5、B6にそれぞれ「sohail」をコピーする必要があります...

ImageName                   PhotographerName
pirf_20120523_sa0001.jpg    sohail
pirf_20120523_ml0001.jpg    manav
pirf_20120523_sa0001.jpg    sohail
pirf_20120523_sa0001.jpg    sohail
pirf_20120523_sa0001.jpg    sohail
pirf_20120529_sh0005.jpg    shirazi
pirf_20120523_ml0001.jpg    manav 
pirf_20120529_sh0005.jpg    shirazi

テキストが見つかったアドレスを取得しようとしました...

Sub FindinTextInEachCell()

Dim rngX As Range


Set rngX = Worksheets("Sheet1").Range("A1:A10").Find("sa", lookat:=xlPart)
If Not rngX Is Nothing Then
    MsgBox "Found at " & rngX.Address
End If

End Sub
4

1 に答える 1

0

Findメソッドを適切に使用していないため、最初Rangeに見つかったアドレスのみが返されます。後続の範囲にはメソッドを使用する必要がありますfindnext()が、後続の範囲は重複するため、最初に見つかったアドレスと比較する必要があります。

Sub foo()
On Error Resume Next

Dim rng As Range
Dim prng As Range
Dim firstAddress As String

With Worksheets(1).Range("A1:A10")
    Set rng = .Find("sa", LookIn:=xlValues, LookAt:=xlPart)
    If Not rng Is Nothing Then
        firstAddress = rng.Address
        Do
            Set prng = rng
            rng.Offset(0, 1) = "Sohail"
            Set rng = .FindNext(After:=prng)
        Loop While Not rng Is Nothing And rng.Address <> firstAddress
    End If
End With

End Sub
于 2012-07-16T09:40:55.423 に答える