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件)
- 最新から表示
- 回答順に表示
No.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
こんな感じの事ですか?
No.1
- 回答日時:
そんな「規則正しい操作」を「大量」にする場合に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文でも使って判定すればいい
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になります 下記のコード実行すると エラーになります わかるかた教えてくれませんでしょう 6 2022/12/17 15:01
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excelのマクロについて教えてください。 3 2022/06/30 09:36
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelのVBAで数字と文字列をマ...
-
【VBA】指定したセルと同じ値で...
-
特定の文字を条件に行挿入とそ...
-
セル色なしの行一括削除
-
VBA実行後に元のセルに戻りたい
-
【VBA】シート上の複数のチェッ...
-
指定した条件で範囲選択したい
-
Excel VBA、 別ブックの最終行...
-
EXCELのVBA-フィルタ抽出後の...
-
実行時エラー438 オブジェクト...
-
先頭と末尾を指定して連続した...
-
EXCEL VBA 画面のロックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報