Excel VBA質問箱 IV

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

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


12584 / 13644 ツリー ←次へ | 前へ→

【9766】カーソル移動 koshimizu 03/12/16(火) 15:27 質問
【9769】Re:カーソル移動 INA 03/12/16(火) 16:10 回答
【9775】Re:カーソル移動 koshimizu 03/12/16(火) 16:29 質問
【9776】Re:カーソル移動 Asaki 03/12/16(火) 16:55 回答
【9783】Re:カーソル移動 koshimizu 03/12/16(火) 17:56 質問
【9785】Re:カーソル移動 Asaki 03/12/16(火) 18:14 回答
【9790】Re:カーソル移動 Asaki 03/12/16(火) 22:29 回答
【9793】Re:カーソル移動 koshimizu 03/12/17(水) 8:22 お礼

【9766】カーソル移動
質問  koshimizu E-MAIL  - 03/12/16(火) 15:27 -

引用なし
パスワード
   こんにちは。
お世話になっています。

皆様に教えて戴いたり、投稿を見ながら下記のような状態で
使用していますが、数値を変えながら使用するため不便を感じます。
B列に氏名が人数分入っているので、これを元にC列以降を同じように
作動させる良い方法がありましたらお願いします。戻って欲しいのはC8、D8・・です。

Sub セル移動()
  If (ActiveCell.Row >= 8) And (ActiveCell.Row <= 36) Then 
   ActiveCell.Offset(1, 0).Select   
  ElseIf ActiveCell.Row = 37 Then 
   ActiveCell.Offset(-29, 1).Select  
 Do
  If Selection = "" Then  
   Else               
   ActiveCell.Offset(0, 1).Select   
  
   End If
  Loop Until ActiveCell.Value = ""
  End If

End Sub

【9769】Re:カーソル移動
回答  INA  - 03/12/16(火) 16:10 -

引用なし
パスワード
   >B列に氏名が人数分入っているので、これを元にC列以降を同じように
>作動させる良い方法がありましたらお願いします。
>戻って欲しいのはC8、D8・・です。

どのような処理をお望みですか?
いまいちよく分からないのですが・・・

【9775】Re:カーソル移動
質問  koshimizu E-MAIL  - 03/12/16(火) 16:29 -

引用なし
パスワード
   INA さん
こんにちは。
いつもお世話になっています。

B列に氏名欄があり、C8より入力してC列を入力しB列の人数分入力したら
D8にカーソルが移動して欲しいのですが、氏名欄の人数が毎回変わるたびに
<= 36) Then  ElseIf ActiveCell.Row = 37 Then 
ActiveCell.Offset(-29, 1).Select              
の数値を変えて使用しています。良い方法がありましたならお願い致します。

Sub AUTO_OPEN()
  Application.OnKey "{ENTER}", "セル移動" 
  Application.OnKey "~", "セル移動"    

End Sub
Sub AUTO_CLOSE()
  Application.OnKey "{ENTER}"   
  Application.OnKey "~"      
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
Sub セル移動()
  If (ActiveCell.Row >= 8) And (ActiveCell.Row <= 36) Then  はA8番地 
   ActiveCell.Offset(1, 0).Select              
  ElseIf ActiveCell.Row = 37 Then             
   ActiveCell.Offset(-29, 1).Select   
 Do
  If Selection = "" Then         '戻った場所が空白だったらそのまま
   Else                 'そうでなかったら
   ActiveCell.Offset(0, 1).Select    '1つ右のセルへカーソル移動せよ
  
   End If
  Loop Until ActiveCell.Value = ""
  End If

End Sub

【9776】Re:カーソル移動
回答  Asaki  - 03/12/16(火) 16:55 -

引用なし
パスワード
   こんにちは。お邪魔します。

↓こんな感じでしょうか?

Sub セル移動2()

  If Cells(ActiveCell.Row + 1, 2).Value = "" Then
    If Cells(8, ActiveCell.Column).End(xlToRight).Value = "" Then
      Cells(8, ActiveCell.Column + 1).Select
    Else
      Cells(8, ActiveCell.Column).End(xlToRight).Offset(, 1).Select
    End If
  Else
    ActiveCell.Offset(1).Select
  End If

End Sub

【9783】Re:カーソル移動
質問  koshimizu E-MAIL  - 03/12/16(火) 17:56 -

引用なし
パスワード
   Asaki さん
こんにちは。
さっそくの解答有難うございます。
ためしてみましたら良いのですが、入力列(C列入力終わり)に右列(例えばG列)に
すでに入力されている列が有りますとその列の右列(H列に)移動してしまいます。
空白列は入力したいのですが、良い方法がありましたならお願いします。
初心者ですいません。お手数をおかけします。


>Sub セル移動2()
>
>  If Cells(ActiveCell.Row + 1, 2).Value = "" Then
>    If Cells(8, ActiveCell.Column).End(xlToRight).Value = "" Then
>      Cells(8, ActiveCell.Column + 1).Select
>    Else
>      Cells(8, ActiveCell.Column).End(xlToRight).Offset(, 1).Select
>    End If
>  Else
>    ActiveCell.Offset(1).Select
>  End If
>
>End Sub

【9785】Re:カーソル移動
回答  Asaki  - 03/12/16(火) 18:14 -

引用なし
パスワード
   では、こんなん↓では。。。
意図からして、隣の列に移動する場合は、その列の8行目が未入力であることはないと
解釈しています。(=8行目が未入力だと、ちゃんと動かない(^^;))

Sub セル移動2()

  If Cells(ActiveCell.Row + 1, 2).Value = "" Then
    If ActiveCell.Column = ActiveSheet.Columns.Count Then Exit Sub
    If Cells(8, ActiveCell.Column + 1).Value = "" Then
      Cells(8, ActiveCell.Column + 1).Select
    Else
      Cells(8, ActiveCell.Column).End(xlToRight).Offset(, 1).Select
    End If
  Else
    ActiveCell.Offset(1).Select
  End If

End Sub

【9790】Re:カーソル移動
回答  Asaki  - 03/12/16(火) 22:29 -

引用なし
パスワード
   まあ、素直に回るが宜しいかもしれませんです。

Sub セル移動3()

  Dim i    As Long

  If Cells(ActiveCell.Row + 1, 2).Value = "" Then
    If ActiveCell.Column = ActiveSheet.Columns.Count Then Exit Sub
    i = 1
    Do Until (ActiveCell.Column + i > ActiveSheet.Columns.Count)
      If Cells(8, ActiveCell.Column + i).Value = "" Then Exit Do
      i = i + 1
    Loop
    Cells(8, ActiveCell.Column + i).Select
  Else
    ActiveCell.Offset(1).Select
  End If

End Sub

【9793】Re:カーソル移動
お礼  koshimizu E-MAIL  - 03/12/17(水) 8:22 -

引用なし
パスワード
   Asaki さん
おはようございます。
解答有難うございました。
(セル移動3)にて素晴らしく作動しています。
今後とも宜しくお願い致します。

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