Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


763 / 13645 ツリー ←次へ | 前へ→

【78472】文字入力すると次のセルに移動するVBA 洋子 16/9/29(木) 12:28 質問[未読]
【78473】Re:文字入力すると次のセルに移動するVBA β 16/9/29(木) 13:59 発言[未読]
【78474】Re:文字入力すると次のセルに移動するVBA 洋子 16/9/29(木) 14:10 お礼[未読]
【78475】Re:文字入力すると次のセルに移動するVBA β 16/9/29(木) 14:15 発言[未読]
【78477】Re:文字入力すると次のセルに移動するVBA 洋子 16/9/30(金) 13:53 質問[未読]
【78480】Re:文字入力すると次のセルに移動するVBA β 16/9/30(金) 18:56 発言[未読]
【78482】Re:文字入力すると次のセルに移動するVBA 洋子 16/10/3(月) 12:02 お礼[未読]

【78472】文字入力すると次のセルに移動するVBA
質問  洋子  - 16/9/29(木) 12:28 -

引用なし
パスワード
   A1セルに文字を入力するとC2へ移動するようなVBAをお願いします。
入力課所は7か所ぐらいです。
マクロ以外でお願いします。

【78473】Re:文字入力すると次のセルに移動するVBA
発言  β  - 16/9/29(木) 13:59 -

引用なし
パスワード
   ▼洋子 さん:

>VBAをお願いします

>マクロ以外でお願いします。

・・・・・・

VBAってマクロなんですが?

【78474】Re:文字入力すると次のセルに移動するVBA
お礼  洋子  - 16/9/29(木) 14:10 -

引用なし
パスワード
   ▼β さん:
>▼洋子 さん:
>
>>VBAをお願いします
>
>>マクロ以外でお願いします。
>
>・・・・・・
>
>VBAってマクロなんですが?

ご返事有難うございます。
自力で何とかできました。

【78475】Re:文字入力すると次のセルに移動するVBA
発言  β  - 16/9/29(木) 14:15 -

引用なし
パスワード
   ▼洋子 さん:

>自力で何とかできました。

それは祝着です。
用済みですけど、アップしようとしていたコードを参考までに。

シートモジュールに。
★のところは、好きなセルを好きな順番で。
最初のセルを最後にも記述してください。(アップしたコード例ではG8)

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim adr As Variant
  Dim a As Range
  Dim x As Long
  
  adr = Array("G8", "I10", "K14", "M18", "H24", "K31", "N27", "G8")  '★
  Set a = Range(Join(adr, ","))
  If Intersect(Target(1), a) Is Nothing Then Exit Sub
  x = WorksheetFunction.Match(Target(1).Address(False, False), adr, 0)
  Range(adr(x)).Select
  
End Sub

【78477】Re:文字入力すると次のセルに移動するVBA
質問  洋子  - 16/9/30(金) 13:53 -

引用なし
パスワード
   ▼β さん:
>▼洋子 さん:
>
>>自力で何とかできました。
>
>それは祝着です。
>用済みですけど、アップしようとしていたコードを参考までに。
>
>シートモジュールに。
>★のところは、好きなセルを好きな順番で。
>最初のセルを最後にも記述してください。(アップしたコード例ではG8)
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim adr As Variant
>  Dim a As Range
>  Dim x As Long
>  
>  adr = Array("G8", "I10", "K14", "M18", "H24", "K31", "N27", "G8")  '★
>  Set a = Range(Join(adr, ","))
>  If Intersect(Target(1), a) Is Nothing Then Exit Sub
>  x = WorksheetFunction.Match(Target(1).Address(False, False), adr, 0)
>  Range(adr(x)).Select
>  
>End Sub

β さん:最後までご指導有難うございます。
因みに
Private Sub Worksheet_Change(ByVal Target As Range)を使ったコードが二つあるためエラーとなるようです。回避方法ありますか?ちなみ下記子どとなります。

Private Sub Worksheet_Change(ByVal Target As Range)
Const TgCel = "N5" ' <-- 特定セルを指定
If Not Intersect(Range(TgCel), Target) Is Nothing Then
If Range(TgCel) <> "" Then
'MsgBox "セル" & TgCel & " に値が入力されました。"
Call 貼付 ' <-- 実行するマクロ指定
End If
End If
End Sub
宜しくお願いいたします。

【78480】Re:文字入力すると次のセルに移動するVBA
発言  β  - 16/9/30(金) 18:56 -

引用なし
パスワード
   ▼洋子 さん:

たとえば以下のように統合する手はありますね。
さらに、別の処理も、今後加わるかもしれませんので、私がアップしたブロック、
該当なかったらExit Sub としていたところを 該当あれば実行に変えておきました。

なお、●のところ、貼付 内でこのシートのセルを触っているのかどうかわかりませんが
もし、触っている場合、無駄なイベント連鎖が発生しますし、触り方によっては
無限ループに陥りますので、イベント発生の抑止/再開 をいれておきました。

Private Sub Worksheet_Change(ByVal Target As Range)
  Const TgCel = "N5"  ' <-- 特定セルを指定
  Dim adr As Variant
  Dim a As Range
  Dim x As Long

  If Not Intersect(Range(TgCel), Target) Is Nothing Then
    If Range(TgCel) <> "" Then
      Application.EnableEvents = False  '●
      'MsgBox "セル" & TgCel & " に値が入力されました。"
      Call 貼付  ' <-- 実行するマクロ指定
      Application.EnableEvents = True   '●
    End If
  End If

  adr = Array("G8", "I10", "K14", "M18", "H24", "K31", "N27", "G8")  '★
  Set a = Range(Join(adr, ","))
  If Not Intersect(Target(1), a) Is Nothing Then
    x = WorksheetFunction.Match(Target(1).Address(False, False), adr, 0)
    Range(adr(x)).Select
  End If
  
End Sub

【78482】Re:文字入力すると次のセルに移動するVBA
お礼  洋子  - 16/10/3(月) 12:02 -

引用なし
パスワード
   ▼β さん:
>▼洋子 さん:
>
> たとえば以下のように統合する手はありますね。
> さらに、別の処理も、今後加わるかもしれませんので、私がアップしたブロック、
> 該当なかったらExit Sub としていたところを 該当あれば実行に変えておきました。
>
> なお、●のところ、貼付 内でこのシートのセルを触っているのかどうかわかりませんが
> もし、触っている場合、無駄なイベント連鎖が発生しますし、触り方によっては
> 無限ループに陥りますので、イベント発生の抑止/再開 をいれておきました。
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Const TgCel = "N5"  ' <-- 特定セルを指定
>  Dim adr As Variant
>  Dim a As Range
>  Dim x As Long
>
>  If Not Intersect(Range(TgCel), Target) Is Nothing Then
>    If Range(TgCel) <> "" Then
>      Application.EnableEvents = False  '●
>      'MsgBox "セル" & TgCel & " に値が入力されました。"
>      Call 貼付  ' <-- 実行するマクロ指定
>      Application.EnableEvents = True   '●
>    End If
>  End If
>
>  adr = Array("G8", "I10", "K14", "M18", "H24", "K31", "N27", "G8")  '★
>  Set a = Range(Join(adr, ","))
>  If Not Intersect(Target(1), a) Is Nothing Then
>    x = WorksheetFunction.Match(Target(1).Address(False, False), adr, 0)
>    Range(adr(x)).Select
>  End If
>  
>End Sub

β さん
有難うございます。
完成いたしました。感激です・・・・

763 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free