こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

エクセル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に“お”が反映されるだけで“あ”~”え”が入力されません

どうすれば、思い通りになるのでしょうか
初歩的な質問だと思うのですが、よろしくお願いします

投稿日時 - 2013-12-01 23:04:11

QNo.8369768

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

>どうしてもA1を空白にしないためには

既にご説明済みですが?

再掲:
>記録シートのA1セルには「チェック結果」とかなんとか「タイトル」を記入しておき、
>A2からあいうえおが書き込まれるように作成します。

のように作成するのが常識的な対応です。



どーしてもというなら

>最後にA1を削除して上に詰める

のようにしても、勿論結果は得られますね。あなたがどういう使い方を考えてる中で「最後」って一体どう判断するのかは判りませんが、気持ちの上で「これで最後だー」と思ったところで削除するなり、「整形」ボタンをクリックするなり。
絶対最後という事ではユーザーフォームを閉じるタイミングで、自動で整形アクションを動作させるような手もありそうです。



あとはまぁ応用で、尤もひたすらメンドクサイだけですが

if range("A1")="" then
range("A65536").end(xlup) = "あ"
else
range("A65536").end(xlup).offset(1) = "あ"
end if

などのようにしても出来ますね。最期じゃなく「最初」かどうかを調べて、やることを変えます。こちらも別にこれが絶対のやり方じゃありませんので、アイデアや実際の使い方に応じて適宜応用する方法は沢山考えられます。

投稿日時 - 2013-12-03 09:32:39

お礼

回答ありがとうございます
できればA列には他のデータを入れたくなかったので、A1にタイトルにしたくなかったという事情がありました

追加して教えていただいた方法ですが、“あ”以外の文字のも同じことをすることになりますよね
大変そうですが、考え方が参考になりました

ありがとうございました

投稿日時 - 2013-12-04 08:11:34

ANo.2

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

投稿日時 - 2013-12-02 00:04:01

お礼

回答ありがとうございます

1番はじめは、エラー1004になってしまいました

投稿日時 - 2013-12-03 07:37:53

ANo.1

そりゃまぁ、今のマクロでは確かに「最終行に記入している」からですね。
実際には「最後の行の1つ下のセルに」記入したいワケですから

sheets1.Cells(Rows.Count, 1).End(xlUp).offset(1) = "あ"

みたいにします。



#言わずもがなですがまだ何も記入されてない状態で最初の一つ目をきれいに受けるために、記録シートのA1セルには「チェック結果」とかなんとか「タイトル」を記入しておき、A2からあいうえおが書き込まれるように作成します。

投稿日時 - 2013-12-01 23:51:54

お礼

回答ありがとうございます
間違い指摘ありがとうございます

Offsetを使用しているので、A1は空白になってしまいますね
どうしてもA1を空白にしないためには、最後にA1を削除して上に詰めるなどすればいいのでしょうか

投稿日時 - 2013-12-03 07:46:40

あなたにオススメの質問