プロが教える店舗&オフィスのセキュリティ対策術

Excel VBAのボタンについてです。

現在VBAを作成していて、複数のボタンがあります。

最初にいちごボタンを押すとセルにいちご
2番目にりんごボタンを押すと
りんご
いちご
となるようにいちごの上にりんごが
表示されるようにしたいです。
このような結合セルの中に改行されて入るようにしたいです。


VBA初心者のため初歩的な質問で申し訳ございません。お分かりの方がいらっしゃいましたら教えていただきたいです。

「VBA ボタン」の質問画像

質問者からの補足コメント

  • セル内改行をしながら作成していきます。
    2つのボタンがあり、2番目に押したボタンの内容が、1番目に押したボタンの内容の下ではなく上に来るようにしたいです。

    回答していただいたコードでも1度試させて頂きます。ありがとうございます。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/09/24 11:40
  • ボタンはコマンドボタンで、結合セルはA8:D13の結合部分です。 書き込む値はテキストです。

    先程の質問では同じ結合セルに各ボタンの内容を入れる方法を教えていただきそれに関しては解決しました。

    No1の補足コメントでも書いているのですが、
    2番目に押したボタンの内容が、1番目に押したボタンの内容の下ではなく上に来るようにしたいです。 私の言葉が足りず紛らわしくさせてしまい申し訳ございません。

    最初に押したボタンがいちご→結合セルにいちご
    2番目に押したボタンがりんご→
    いちご
    りんご と下に内容が続くのではなく、

    りんご
    いちご と2番目に押したボタンの内容が上に来るようにしたいです。

    伝わりづらかったらすみません。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/09/24 11:48
  • 先程の質問同様回答していただきありがとうございます。
    前回の質問で結合セルに各ボタンの内容を入れる方法が分かったのですが、ボタンを押した順番にどんどん上に内容が表示される方法が知りたく質問をさせて頂きました。

    最初にいちごボタン→セルにいちご
    2番目にりんごボタン→
    いちご
    りんごと下に続くのではなく、

    りんご
    いちごと2番目に押した内容が上に来るようにしたく質問させて頂きました。 分かりづらくてすみません。

    1度教えていただいたコードで試して見ます。
    何度も教えていただきありがとうございます。

    No.3の回答に寄せられた補足コメントです。 補足日時:2020/09/24 11:54

A 回答 (4件)

No1です。



>2番目に押したボタンの内容が、1番目に押したボタンの内容の下ではなく
>上に来るようにしたいです。
読み間違えたようです。失礼しました。

とは言え、単純に、文字の連結順序を逆にすれば良いだけですね。

word = "いちご"

s = Range("A8").Text
If s <> "" Then s = Chr(10) & s
Range("A8").Value = word & s

不明点は適当に処理しています。
    • good
    • 0

https://oshiete.goo.ne.jp/qa/11911390.html
の続きでしょうか?
Cells(8, a).MergeArea(1).Value = Cells(8, a).MergeArea(1).Value & Chr(10) & "りんご"
の部分を
Cells(8, a).MergeArea(1).Value = "りんご" & Chr(10) & Cells(8, a).MergeArea(1).Value
のようにすれば、出来るかと思います。

先の回答は、コピペで回答したため検証もしなかったので
,にするべきを.になっていましたね。
コンパイル出来ず分からなくなってしまったのかもしれませんね。
すみませんでした。

aを4にしている意味が解らず、色々迷走しましたが結合セルA8,D13に書き出すだけなら
a=1にすれば、簡単です。
Private Sub CommandButton1_Click()
Call Test("いちご")
End Sub

Private Sub CommandButton2_Click()
Call Test("りんご")
End Sub

Private Sub Test(input_Value As Variant)
a = 1
If Cells(8, a).Value = "" Then
Cells(8, a).Value = input_Value
Else
Cells(8, a).Value = input_Value & Chr(10) & Cells(8, a).Value
End If
End Sub

めぐみん_様と同様疑問点は残りますが、参考まで
この回答への補足あり
    • good
    • 0

先の質問で解決されたのではないのですか?



気になった点としては
・ボタンとは何を指すのか?
・書き込む結合セルはA8:D13を結合した所だけ?
・書き込む値はボタンに表示されているテキスト?

Officeを壊している初級者ですので前回は拝見だけさせてもらいましたが、解決したのに再度出直しとはどうしたのかと気になりましたので。
ボタンが複数あって同じことを記載するのが煩わしいとかですかね?
この回答への補足あり
    • good
    • 0

こんにちは



ご質問文からは対象セルが固定なのかはっきりしませんが、どうやらA8セル固定で「セル内改行しながら文字列を追加してゆく」ということでしょうか?

必要なのかどうかは不明ですが、最初の行だけは改行がいらないのでしょうから…
仮に、「いちご」を追加するなら

word = "いちご"

s = Range("A8").Text
If s <> "" Then s = s & Chr(10)
Range("A8").Value = s & word

みたいな感じでいかがでしょうか?
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!