特定の列のセル値を定義済みの名前に置き換えるコードを実行しようとしています。また、値の最初の9文字がxxxxxxxxx
の場合にのみ置き換えが行われるという条件があります。特定のシートのセル値を定義済みの名前に置き換えます。
もっと正確には、2つの特定のワークシートでC:C
の値を変更する必要があります(ブック全体をループしたくありません)。
コードで何も起こらない理由はわかりません(エラーメッセージなし、何もありません)。
しかし、これらの2つの特定のワークシートでコードを動作させる場合は、With
を使用しないでください。私はまた、Range
の私の使用は、おそらく全く正しいとは知りません。
Sub ChangeMe()
Dim cl As Range
For Each cl In Worksheets("Sheet1").Range("C:C").End(xlUp)
With Worksheets("Sheet2").Range("C:C").End(xlUp)
If Left(cl.Value, 9) = "XXXXXXXXX" Then
cl.Value = ThisWorkbook.Names("MyDefinedName").RefersToRange
End If
End With
Next cl
End Sub
あなたの投稿を何度も読んでも、あなたが遂行しようとしていることがまだ分かりません。あなたは「XXXXXXX」がどこにあるのか説明できますか?どの欄でどのシート?それが見つかると、あなたはそれをどのような価値に置き換えたいのですか? –
'If'文の' cl.Value'に '1'や' test'のような別の値を代入しようとしましたか?同じ結果ですか? – freginold
'Ref'ToRange'が単一のセルである限り、あなたのコードは' cl'の内容を 'MyDefinedName'で参照されるセルの内容に置き換えます**' MyDefinedName'が複数のセルを参照する場合はおそらく'... RefersToRange(1,1)'がより適切かもしれません。しかし、より多くの情報がなければ、言うのは難しい。 –