
Excel2010環境とExcel2003環境が混在する社内で縦長の商品仕様書を作っています。
どの商品も途中で「包装仕様」という一連の入力項目が出てくるのですが、商品によって「包装仕様」が登場する行が異なります(場合によっては列までも異なります)。
そこで「包装仕様入力欄」という名前付き範囲を作成し、その名前付き範囲の「資材名」の新規入力欄に一発でジャンプできると便利だと考えました。
資材名の新規入力セルは範囲名「包装仕様入力欄」の左から2列目になり、範囲名「包装仕様入力」内においてだけならその列の新規入力セル以下には何も入力されていませんが、右隣の列には補足事項が記入されるため、範囲名「包装仕様入力欄」の2列目の最終行の1つ下のセルを狙って選択する必要があります。
Range("包装仕様入力欄")(Range("包装仕様入力欄”).Rows.Count, 2).End(xlUp).Offset(1).Select
で確かに動作しますが、「Range("包装仕様入力欄")」を2度も記述しているなど、あまりスマートではありません。もう少しスマートな記述があるのなら教えてください。

No.2ベストアンサー
- 回答日時:
こんにちは。
どのみち、このようなコードには、「スマート(Cool)」なものなどはないと思います。
もし、あえて言わせていただけるなら、[名前定義]を使った時点で、VBA側からみると、あなた(ワークーシート・ユーザー)任せになってしまいますから、プログラマからは嫌われます。本来なら、その中身を調べなくてはなりません。
>Range("包装仕様入力欄")(Range("包装仕様入力欄”).Rows.Count, 2).End(xlUp).Offset(1).Select
>「Range("包装仕様入力欄")」を2度も記述しているなど、
スマートかそうでないかというよりも、RangeのItemプロパテイ(省略可)のパラメータは数字なので、予め変数で、Range("包装仕様入力欄”).Rows.Countを取ればよいのですね。プロパティの中で計算をさせなくてもよいのです。
簡単に書くなら、以下のでもよいと思います。
'//
With Range("包装仕様入力欄") '20は、適当なダミーの下辺
.Cells(.Rows.Count + 20, 2).End(xlUp).Offset(1).Select
End With
'//
必ず空白があるなら、20などというダミーの下辺などは要りませんが、たぶん、そうとは限らないはずです。
自身の思慮の浅さを実感しています。
まず「包装仕様入力欄」のすぐ下に別のデータが入力されています。
ですのでダミーの下辺を用いる方法は使えません。
説明不足で申し訳ありません。
「Range("包装仕様入力欄")」の最下部まで入力されているとき、End(xlUp)を使うと最上部が選択されてしまうこと、さらにその状態で空白セルがあるときは空白セルの2つ下のセルが選択されることも少し問題です。
なので、入力範囲の最下セルに何かが入力されているときはExit Subで逃げることにしました。
Dim n As Integer
n = Range("入力テーブル").Rows.Count
With Range("入力テーブル")(n, 2)
If .Value <> "" Then
MsgBox "データ一杯"
Exit Sub
Else
.End(xlUp).Offset(1).Select
End If
End With
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Visual Basic(VBA) 入力と同時に桁数を詰める 3 2022/09/11 20:23
- Excel(エクセル) エクセルのマクロを教えてください 2 2022/05/13 10:21
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) スプレッドシートのマクロで値の入力があるセルの範囲を指定する方法を教えて下さい 2 2022/04/05 17:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのリストについて
-
ドロップダウンリスト 自動表...
-
autocad 数値が表示されなくな...
-
マクロ 入力規則は残し文字の...
-
Excelについて
-
excelのInputBoxで日本語入力OF...
-
EXCEL VBAの入力規則で小数点桁...
-
エクセルVB ポップアップウィ...
-
エクセルで半角カナや特殊文字...
-
【スプレッドシート】時間入力...
-
小数点以下の入力規則
-
excelで第二金曜日を…
-
エクセルの検索関数でシート内...
-
VBAの日付チェックでオーバーフ...
-
エクセル COUNTIF関数 検索条...
-
楽々はがき
-
キーボードの文字入力がおかしい
-
エクセルで入力規則(リスト)...
-
弥生会計05、「摘要」入力について
-
求人情報で「SAP入力可能な方」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ドロップダウンリスト 自動表...
-
Excelについて
-
autocad 数値が表示されなくな...
-
VBAの日付チェックでオーバーフ...
-
エクセルで半角カナや特殊文字...
-
マクロ 入力規則は残し文字の...
-
excelのInputBoxで日本語入力OF...
-
ドロップダウンリストを2列で...
-
エクセルVB ポップアップウィ...
-
エクセル 日付超過でポップアッ...
-
求人情報で「SAP入力可能な方」...
-
小数点以下の入力規則
-
pdfの文字入力で一文字ずつしか...
-
excelで第二金曜日を…
-
EXCEL VBAの入力規則で小数点桁...
-
アクセス2000 クエリ抽出でBet...
-
エクセルで入力規則(リスト)...
-
Excelで日報を自動で作成したい...
-
弥生会計05、「摘要」入力について
-
【スプレッドシート】時間入力...
おすすめ情報