Excel VBA質問箱 IV

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

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


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

【72708】空白時に実行させたい ねい 12/9/7(金) 17:47 発言[未読]
【72709】Re:空白時に実行させたい kanabun 12/9/7(金) 18:28 発言[未読]
【72711】Re:空白時に実行させたい ねい 12/9/7(金) 18:37 発言[未読]
【72710】Re:空白時に実行させたい kanabun 12/9/7(金) 18:37 発言[未読]
【72712】Re:空白時に実行させたい ねい 12/9/7(金) 18:49 質問[未読]
【72713】Re:空白時に実行させたい kanabun 12/9/7(金) 18:55 発言[未読]
【72714】Re:空白時に実行させたい kanabun 12/9/7(金) 18:59 発言[未読]
【72715】Re:空白時に実行させたい kanabun 12/9/7(金) 20:21 発言[未読]
【72717】Re:空白時に実行させたい ねい 12/9/7(金) 21:41 お礼[未読]

【72708】空白時に実行させたい
発言  ねい  - 12/9/7(金) 17:47 -

引用なし
パスワード
   EXCELに弱いのですが質問させてください。

A列からE列までEnterを押すことで横に移動させ、
E列まで行ったら次の行に飛ばせたいです。
A1→B1→C1→D1→E1→A2→B2→C2→D2→E2→A3→…

入力があればそのような動きになるようになったのですが、
入力がないEnterの場合にも適応させるにはどうしたらいいか
ぜひお力添えをお願いします。。


Private Sub Worksheet_Change(ByVal Target As Range)
  Dim myRng As Range
  
  Set myRng = Range("A:E")
  
  With Target
    If Target(.Cells, myRng) Is Nothing Then Exit Sub

    If Target(.Cells, myRng.Columns(myRng.Columns.Count)) Is Nothing Then
      Cells(.Row, .Column + 1).Select
    Else
      Cells(.Row + 1, myRng.Columns(1).Column).Select

    End If

  End With

End Sub

【72709】Re:空白時に実行させたい
発言  kanabun  - 12/9/7(金) 18:28 -

引用なし
パスワード
   ▼ねい さん:

回答ではありません。

>  With Target
>    If Target(.Cells, myRng) Is Nothing Then Exit Sub
>
>    If Target(.Cells, myRng.Columns(myRng.Columns.Count)) Is Nothing Then
>      Cells(.Row, .Column + 1).Select
>    Else
>      Cells(.Row + 1, myRng.Columns(1).Column).Select
>
>    End If
>
>  End With

このままでは動かないですけど?
コピペミスじゃないですか?

 With Target
    If Intersect(.Cells, myRng) Is Nothing Then Exit Sub

    If Intersect(.Cells, myRng.Columns(myRng.Columns.Count)) Is Nothing Then

なら、とりあえず、動きますけど。

【72710】Re:空白時に実行させたい
発言  kanabun  - 12/9/7(金) 18:37 -

引用なし
パスワード
   ▼ねい さん:
>
>A列からE列までEnterを押すことで横に移動させ、
>E列まで行ったら次の行に飛ばせたいです。
>A1→B1→C1→D1→E1→A2→B2→C2→D2→E2→A3→…
>
ThisWorkbookモジュールは分かりますか?
そこに行って、以下のコードを貼り付けてから、保存して
いちど閉じてから開いてください。
Sheet1上で[Enter]を押してみてください。

Private Sub Workbook_Open()
  Application.MoveAfterReturnDirection = xlToRight
  Worksheets(1).ScrollArea = "A:E"
  
End Sub

【72711】Re:空白時に実行させたい
発言  ねい  - 12/9/7(金) 18:37 -

引用なし
パスワード
   もうしわけありません!!

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim myRng As Range
  
  Set myRng = Range("A:E")

  With Target
    If Intersect(.Cells, myRng) Is Nothing Then Exit Sub

    If Intersect(.Cells, myRng.Columns(myRng.Columns.Count)) Is Nothing Then
      Cells(.Row, .Column + 1).Select
    Else
      Cells(.Row + 1, myRng.Columns(1).Column).Select
    End If
  End With
End Sub


になります。

【72712】Re:空白時に実行させたい
質問  ねい  - 12/9/7(金) 18:49 -

引用なし
パスワード
   kanabun さん

ありがとうございます。
NullでEnterをして横に移動するようにはなったのですが
E列まで行ったときに次の行に改行させたいのです。

可能でしょうか?


▼kanabun さん:
>▼ねい さん:
>>
>>A列からE列までEnterを押すことで横に移動させ、
>>E列まで行ったら次の行に飛ばせたいです。
>>A1→B1→C1→D1→E1→A2→B2→C2→D2→E2→A3→…
>>
>ThisWorkbookモジュールは分かりますか?
>そこに行って、以下のコードを貼り付けてから、保存して
>いちど閉じてから開いてください。
>Sheet1上で[Enter]を押してみてください。
>
>Private Sub Workbook_Open()
>  Application.MoveAfterReturnDirection = xlToRight
>  Worksheets(1).ScrollArea = "A:E"
>  
>End Sub

【72713】Re:空白時に実行させたい
発言  kanabun  - 12/9/7(金) 18:55 -

引用なし
パスワード
   ▼ねい さん:


>E列まで行ったときに次の行に改行させたいのです。

>>Private Sub Workbook_Open()
>>  Application.MoveAfterReturnDirection = xlToRight
>>  Worksheets(1).ScrollArea = "A:E"
>>  
>>End Sub

で、そのような動きになるはずですが。。。

【72714】Re:空白時に実行させたい
発言  kanabun  - 12/9/7(金) 18:59 -

引用なし
パスワード
   >▼ねい さん:
>
>
>>E列まで行ったときに次の行に改行させたいのです。
>
>>>Private Sub Workbook_Open()
>>>  Application.MoveAfterReturnDirection = xlToRight
>>>  Worksheets(1).ScrollArea = "A:E"
>>>  
>>>End Sub
>
>で、そのような動きになるはずですが。。。

あ、シートがちがうのかな?
上の設定は Worksheets(1) ですので、いちばん左のワークシート
だけです。
対象シートがちがうのなら、そこを適宜変更してください。

【72715】Re:空白時に実行させたい
発言  kanabun  - 12/9/7(金) 20:21 -

引用なし
パスワード
   ▼ねい さん:

複数のBookを開いていて、このBookだけ Enterのときの移動方向を
<右へ>としたい(他のBookは デフォルトの <下へ> とする)のなら、
先ほどのを 以下に差し替えてください。

Private Sub Workbook_Open()
  Application.MoveAfterReturnDirection = xlToRight
  Dim ws As Worksheet
  For Each ws In Worksheets
    ws.ScrollArea = "A:E"
  Next
End Sub

Private Sub Workbook_Activate()
  Application.MoveAfterReturnDirection = xlToRight

End Sub
Private Sub Workbook_Deactivate()
  Application.MoveAfterReturnDirection = xlDown
End Sub

【72717】Re:空白時に実行させたい
お礼  ねい  - 12/9/7(金) 21:41 -

引用なし
パスワード
   kanabunさま

うううう、、、出来ました。。
本当にありがとうございます。

今までは入力後のセルの移動を右にしても、たな卸し時にバーコードをスキャン
すると自動で下にいってしまうカーソルを右に手動でずらし個数を入れていました。
これで残業が減りそうです。

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


▼kanabun さん:
>▼ねい さん:
>
>複数のBookを開いていて、このBookだけ Enterのときの移動方向を
><右へ>としたい(他のBookは デフォルトの <下へ> とする)のなら、
>先ほどのを 以下に差し替えてください。
>
>Private Sub Workbook_Open()
>  Application.MoveAfterReturnDirection = xlToRight
>  Dim ws As Worksheet
>  For Each ws In Worksheets
>    ws.ScrollArea = "A:E"
>  Next
>End Sub
>
>Private Sub Workbook_Activate()
>  Application.MoveAfterReturnDirection = xlToRight
>
>End Sub
>Private Sub Workbook_Deactivate()
>  Application.MoveAfterReturnDirection = xlDown
>End Sub

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