プロが教える店舗&オフィスのセキュリティ対策術

VBA初心者です。
特定範囲で、エンターキーの際にアクティブセルが横方向に移動するマクロを作っています。
しかしプロシーシャが一杯である旨の表示が出てしまいます。
そのプログラムの一部を抜粋します。

Case "B50"
Range("C50").Select
Case "C50"
Range("D50").Select
Case "D50"
Range("F50").Select
Case "F50"
Range("G50").Select
Case "G50"
Range("I50").Select
Case "I50"
Range("J50").Select
Case "B51"
Range("C51").Select
Case "C51"
Range("D51").Select
Case "D51"
Range("F51").Select
Case "F51"
Range("G51").Select
Case "G51"
Range("I51").Select
Case "I51"
Range("J51").Select
Case "B52"
Range("C52").Select
Case "C52"
Range("D52").Select
Case "D52"
Range("F52").Select
Case "F52"
Range("G52").Select
Case "G52"
Range("I52").Select
Case "I52"
Range("J52").Select
Case "B53"
Range("C53").Select
Case "C53"
Range("D53").Select
Case "D53"
Range("F53").Select
Case "F53"
Range("G53").Select
Case "G53"
Range("I53").Select
Case "I53"
Range("J53").Select


これが結構ながく続いております。
Caseの省略方法があればご教授いただければと思います。
なのとぞよろしくお願いします。

A 回答 (2件)

コードの一部もですが、


まずはやりたい事を書かないと。。。

WorkSheetのChangeイベントだとして


Private Sub Worksheet_Change(ByVal Target As Range)

' 50行未満 または 100行を越える場合は無視
If Target.Row < 50 Or Target.Row > 100 Then Exit Sub

' 変更したセルの列が
Select Case Target.Column

' B・C・D・F・G・Iの場合
Case 2, 3, 4, 6, 7, 9

' 変更したセルの右隣にカーソルを移動
Target.Offset(, 1).Select

End Select

End Sub

こんな感じの事ですか?
    • good
    • 0

そんな「規則正しい操作」を「大量」にする場合にSelect Case使うこと自体が間違い



R1C1形式を使うとか、Cellsを使うとかで、カラムを一つ足せばいいんじゃないですか?
.Cells(row,col+1).select みたいに (row,colには現在のセルの行と列が入っているとして)


現在のままCaseでやるにしても、行は変わらないのだから、アルファベットと数字を分けて、アルファベットだけで処理すればいいし。

Select col
Case "B"
col0="C"
(略)
End Select
Range( col0 & row ).select

特定の範囲だけでやりたいのなら、処理の前にif文でも使って判定すればいい
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!