Xと、11より大きいテキスト長のセルをスキャンしたいと思っています。ユーザーに変更を求めるメッセージボックスが表示されます。ユーザーがOKボタンを押すと、X列の値をすべて置き換えます。これは構文ですが、各セルを反復しているわけではありません。新しい名前変更値を入力すると、マクロは依頼を続けますが、列Xの下でセルを反復処理しないように見えます。すべてのセルでテキストを変更する機能
私が望むようにこのマクロ機能を使用するには、何を変更する必要がありますか?
Function ShortenText()
Dim c As Range
Dim lRow As Long
Dim NewValue As String
lRow = Cells(Rows.Count, 24).End(xlUp).Row
For Each c In Range("X1:X" & lRow)
Cells(c.Row, 2) = Len(c)
If Len(c) > 11 Then
NewValue = Trim(InputBox("What would you like to rename the value")
Selection.Replace What:=c.Value, Replacement:=NewValue, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End If
Next c
End Function
あなたは 'Selection'に対して' Replace'を実行していますが、あなたのコードは決して任意の範囲を 'Select'しません。おそらく 'Selection.Replace'を' Range( "X1:X"&lRow).Replace'に変更すると、現在処理中のセルと同じ値を持つX列のすべてを変更することができますユーザーによって指定された同じ新しい値。しかし、ユーザーが各セルを別の値に変更したい場合(例えば、 "longish string"から "x"への1回の出現と "longish string"から "y"への出現)、おそらく 'c。 Value = NewValue'を実行してください。 – YowE3K