
No.1ベストアンサー
- 回答日時:
理由は、End(xlDown)で移動する先にデータがあるのかどうかと、
項目名(A1セル)が未入力でないことが前提だから。
https://www.moug.net/tech/exvba/0050088.html
質問文の一部では間違って書いたのでしょうが、A1セルが未入力
及びA2セル以降が空白セルの場合、End(xlDown)のキーボードの
動きである[Ctrl+↓]は最終行のA1048576セルに移動します。
ここからOffset(1, 0)で下のセルへと移動しようとしても、行がない
のですからエラーになります。
A1とA2に入力されていれば、Range("a1").End(xlDown)でA2セル
へと移動し、Offset(1, 0)でA3セルへと値を入力できるようになる
のでエラーにならないだけですから。
マクロだけで理解するより、既定の動作を理解することが先。
[Ctrl+↓]のキー動作を理解すれば、End(xlDown)を使わないで、
[Ctrl+↑]を使ったほうがOffset(1, 0)を生かせるのがわかるはず。
Sub 最終行()
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = "列の一番下"
End Sub
これを前回質問にある私のマクロに置き換えると、こうなります。
https://oshiete.goo.ne.jp/qa/13325229.html
Sub A列空白セルに本日の日付を入力()
If Cells(1, 1).Value = "" Then
Cells(1, 1).Select
ActiveCell.Value = Date
Else
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value=Date
End If
End Sub
この回答へのお礼
お礼日時:2023/01/29 01:56
大変、分かりやすい説明ありがとうございます。マクロだけではなく、通常のハンド操作をした上で、マクロの方が理解できますね。
いつも、ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
エクセルで、重複データを除外...
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
excel:別シートの値を飛び飛び...
-
Countifよりも早く重複数をカウ...
-
VBA 数式を最終行までコピー
-
エクセルで横並びの複数データ...
-
マクロで統合
-
エクセルでデータの重複削除方法
-
不要な行を消したい
-
Excelで表を作り、自動で今月の...
-
EXCELで○ヶ月を○年○ヶ月に変換...
-
IF関数で0より大きい数値が入力...
-
お肉の下のシートを煮込んでし...
-
複数の文字列のいずれかが含ま...
-
エクセルのセルが縦方向にのびる
-
A1セルに入力したら、入力時間...
-
エクセルの複数のセルを一括で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで1列に500行並んだデ...
-
Excelで2行単位のソートの出来...
-
エクセルで日付から日にちを削...
-
複数の条件に合う行番号を取得...
-
excel:別シートの値を飛び飛び...
-
エクセルで、重複データを除外...
-
Countifよりも早く重複数をカウ...
-
不要な行を消したい
-
エクセルで横並びの複数データ...
-
Excelの30個ずつの平均値の出し方
-
VBA 大きなtxtテキストファ...
-
エクセル2016にて、行挿入&コピ...
-
VBA 数式を最終行までコピー
-
Excel VBA 空白セル以下のデー...
-
【VBA】A列にある連続したデー...
-
Excelでデーターが多いので、平...
-
【エクセル】1列内に複数ある同...
-
エクセルVBA C列に特定の文字列...
-
エクセル~空白のセルのある行...
-
本日の日付を超えているものを...
おすすめ情報