• ベストアンサー

Excel 置換? VBA

先ほども質問したんですが、 A1に010と入力すると田中、020入力で鈴木と出来るように、 ------------------------------------------------------ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub Select Case Target.Value Case "010": myStr = "田中" Case "020": myStr = "鈴木" Case "030": myStr = "岡田" Case "": myStr = "" Case Else: myStr = "非該当" End Select Application.EnableEvents = False On Error GoTo line Target.Value = myStr line: Application.EnableEvents = True End Sub ---------------------------------------------------- を教えていただきました! が、A2でも同じようなことを行いたいのです! VBAの知識が乏しいのでコピペでいろいろやってみたのですが、エラーで出来ませんでした…。 A1 A2 ・ ・ ・ と同じように入力できるようにするにはどのようにすればよいのでしょうか?もう一度教えて下さい。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

>If Target.Address <> "$A$1" Then Exit Sub を下記と入れ替えてください If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub

motty7777
質問者

補足

教えて頂いたとおりにやってみましたが出来ません…。 どうしてでしょうか?

その他の回答 (6)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.7

>A1 >A2 >・ >・ >・ >と同じように入力できるようにするにはどのようにすればよいのでしょうか? これってA列に対して数行の範囲を持つという事では? そうするとセルを数個選択してクリアならエラー処理もいるかも。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.6

それともこうゆう事 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1")) Is Nothing Then Select Case Target.Value Case "010": myStr = "田中" Case "020": myStr = "鈴木" Case "030": myStr = "岡田" Case "": myStr = "" Case Else: myStr = "非該当" End Select ElseIf Intersect(Target, Range("A2")) Is Nothing Then Select Case Target.Value Case "010": myStr = "あああ" Case "020": myStr = "いいい" Case "030": myStr = "ううう" Case "": myStr = "" Case Else: myStr = "非該当" End Select End If Application.EnableEvents = False On Error GoTo line Target.Value = myStr line: Application.EnableEvents = True End Sub

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub Select Case Target.Value Case "010": myStr = "田中" Case "020": myStr = "鈴木" Case "030": myStr = "岡田" Case "": myStr = "" Case Else: myStr = "非該当" End Select Application.EnableEvents = False On Error GoTo line Target.Value = myStr line: Application.EnableEvents = True End Sub 一度、すべて消して上のコードだけにしてください >教えて頂いたとおりにやってみましたが出来ません…。 もう少し、スキルを上げてからにしては 余りにも初歩過ぎます

motty7777
質問者

お礼

ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

同じコードを作成していませんか? Private Sub Worksheet_Change(ByVal Target As Range) ワークシートを変更したときに自動実行するマクロです 全体をコピーして貼り付けするとエラーになります。 提示されたマクロ内に変化したセルによって異なるルーチンを作成する必要があります。 処理が同じであれば If Target.Address <> "$A$1" Then Exit Sub ここでA2セルの場合も実行するように変更すれば解決します。 処理内容が異なる場合は処理ルーチンをTarget.Address ごとに変化させる必要があります。

motty7777
質問者

補足

>ここでA2セルの場合も実行するように変更すれば解決します。 実際にはどういうふうに記述しますか?

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.1です! たびたぶすみません。 キーを打ち間違えました VBAです・・・ ごめんなさい。m(__)m

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 先ほどはどうも失礼しました! VLOOKUP関数で回答した者です。 BVAの方法は分かりかねますが・・・ 先ほどの数式でA1セルをそのままオートフィルでコピーすれば 希望通りになると思います。m(__)m

motty7777
質問者

お礼

やはり、VBAでやった方が思い通りに出来てしまいました…。

関連するQ&A

専門家に質問してみよう