• 締切済み

エクセルVBA 最終行にデータを追加する

エクセルのユーザーフォームにチェックリストを用意しました CheckBox1~CheckBox5まであり、 CheckBox1をクリック(true)にすると、セルに“あ” CheckBox2をクリック(true)にすると、セルに“い” CheckBox3をクリック(true)にすると、セルに“う” CheckBox4をクリック(true)にすると、セルに“え” CheckBox5をクリック(true)にすると、セルに“お” を反映させようと思っています たとえば、 ・CheckBox1のみクリック(true)で、A1に“あ” ・CheckBox2のみクリック(true)で、A1に“い” ・CheckBox1、CheckBox3をクリック(true)で、A1に“あ”、A2に“う” ・CheckBox2~CheckBox5をクリック(true)で、A1に“い“、A2に“う“、A3に”え”、A4に“お” といった感じで、選んだチェック項目について、A列においてA1から次々とデータを入力しようとしています そこで、 sheets1.Range("A:A").Clear If CheckBox1.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "あ" End If If CheckBox2.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "い" End If If CheckBox3.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "う" End If If CheckBox4.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "え" End If If CheckBox5.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "お" End If としました (実際は、CheckBoxの名前が1~5と数字ではないので、forは使いませんでした) すると、 CheckBox1~CheckBox5を全てクリック(true)しても、A1に“お”が反映されるだけで“あ”~”え”が入力されません どうすれば、思い通りになるのでしょうか 初歩的な質問だと思うのですが、よろしくお願いします

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

>どうしてもA1を空白にしないためには 既にご説明済みですが? 再掲: >記録シートのA1セルには「チェック結果」とかなんとか「タイトル」を記入しておき、 >A2からあいうえおが書き込まれるように作成します。 のように作成するのが常識的な対応です。 どーしてもというなら >最後にA1を削除して上に詰める のようにしても、勿論結果は得られますね。あなたがどういう使い方を考えてる中で「最後」って一体どう判断するのかは判りませんが、気持ちの上で「これで最後だー」と思ったところで削除するなり、「整形」ボタンをクリックするなり。 絶対最後という事ではユーザーフォームを閉じるタイミングで、自動で整形アクションを動作させるような手もありそうです。 あとはまぁ応用で、尤もひたすらメンドクサイだけですが if range("A1")="" then range("A65536").end(xlup) = "あ" else range("A65536").end(xlup).offset(1) = "あ" end if などのようにしても出来ますね。最期じゃなく「最初」かどうかを調べて、やることを変えます。こちらも別にこれが絶対のやり方じゃありませんので、アイデアや実際の使い方に応じて適宜応用する方法は沢山考えられます。

kidibotkbg
質問者

お礼

回答ありがとうございます できればA列には他のデータを入れたくなかったので、A1にタイトルにしたくなかったという事情がありました 追加して教えていただいた方法ですが、“あ”以外の文字のも同じことをすることになりますよね 大変そうですが、考え方が参考になりました ありがとうございました

  • TAKA_R
  • ベストアンサー率32% (26/79)
回答No.2

正しくは「最終行の次の行に書き込み」だと思います。 のでRows.Count+1が正しいかと。 1番はじめの”A1”でもいけるのかは確認していませんが。

kidibotkbg
質問者

お礼

回答ありがとうございます 1番はじめは、エラー1004になってしまいました

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

そりゃまぁ、今のマクロでは確かに「最終行に記入している」からですね。 実際には「最後の行の1つ下のセルに」記入したいワケですから sheets1.Cells(Rows.Count, 1).End(xlUp).offset(1) = "あ" みたいにします。 #言わずもがなですがまだ何も記入されてない状態で最初の一つ目をきれいに受けるために、記録シートのA1セルには「チェック結果」とかなんとか「タイトル」を記入しておき、A2からあいうえおが書き込まれるように作成します。

kidibotkbg
質問者

お礼

回答ありがとうございます 間違い指摘ありがとうございます Offsetを使用しているので、A1は空白になってしまいますね どうしてもA1を空白にしないためには、最後にA1を削除して上に詰めるなどすればいいのでしょうか

関連するQ&A