VBAを始めたばかりの初心者です。
sheet1にコントロール(CommandButton)を10個ほど配置しました。各CommandButtonのCaptionにsheet2~11のセルA1の値を表示させたいと思っています(このA1の値は変化します)。
Private Sub Workbook_Open()
Dim Mrang1 As String
Mrang1 = Worksheet(2).Range("a1").Value
CommandBottan1.Caption = Mrang
End Sub
上記のようなものを考えてみましたが、ダメでした。
根本的に何か間違っているのでしょうか。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
質問の真意というか、困っている状況が良く伝わりませんが推定して
私も試行してみました。上手く行かない原因は「イベント」の捕らえ方
選び方にあると思います。イベントとは「クリックしたら」とか「ワークブックを開いたら」とか言うプログラムが実行される「きっかけ」のことですよね。
以下回答を済ませてから良く見ると質問はコマンドボタン
を貼りつけるものでした。済みません置き換えてください。変わりはないと思います。
新規WorkbookのSheet1を開き、メニューバーの右余白部分で
右クリック-コントロールツールボックス-ラベル(Aの表示のあるもの)とクリックし、ラベルをSheet1上にドラッグして貼りつけました。
それを3回繰り返し3つラベルを貼りつけました。その後
ツール-マクロ-VisualBasicEditor-コードをクリックします。
イベントとしてWorksheetのActivateを選びました。
コーディングの本体は貴殿と同じです。
Private Sub Worksheet_Activate()
Label1.Caption = Worksheets("sheet1").Range("a1")
Label2.Caption = Worksheets("sheet2").Range("a1")
Label3.Caption = Worksheets("sheet3").Range("a1")
End Sub
そしてメニューの「実行」をクリックします。その後Worksheetに切り替えてSheet2のA1に文字列値(ロとする)を入れ、Sheet3のA1に文字列値(ハとする)を入れSheet1に戻ります。最後にSheet1のA1に文字列(イ)値を入れると、Sheet1の3つのラベルの文字がそれぞれイ、ロ、ハになります。
Sheet2を開いてA1の値を変えたり、Sheet3を開いてA1の値を変えたりして、Sheet1に戻るとSheet1の3つラベルは変えたように変わります。
ただこのWorksheetはSheet1を指すようで、Sheet2のA1に「ロ」を
入れた時やSheet3のA1に「ハ」を入れた時に、Sheet1のラベル
が変わるのではないようです。
しかし貴殿の意図のケースではSheet1にもどった時に変わっていれ
ば差し支えないのではないでしょうか。
丁寧な回答で、もやもやとしていたイベントの概念もよーくわかりました。
大きなヒントになったのは、Worksheets("sheet1")の"sheet1"の部分でした。
はずかしながら、Worksheets(1)とWorkshhts("sheet1")は全く同じであると思っておりまして、「ボタン」を配置したシートの指定がまちがっていたようです。
あとは回答いただいた通り作成してみたところ、うまくいきました。本当に有り難うございました。
No.3
- 回答日時:
こんな感じはどうでしょう。
コントロールは配列で配置して、
Dim Mrang(10) as string
Dim i as integer
FOR i=0 to 10
Mrang(i)=Worksheets(i+2).Cells(1,1)
WorkSheets(1).CommandButton(i).Caption=Mrang(i)
NEXT i
~まず配列Mrang()にそれぞれの文字列を代入して、コマンドボタンのキャプションに表示させます。
そんな感じでとてもいいです。
10個のコマンドボタンを配置して…と質問に書いた後40個に増えました。なので、この配列の回答はぜひ使わせていただきたいと思います。有り難うございました。
No.1
- 回答日時:
シート1に作ったボタンというのは「フォーム」ツールバーの「ボタン」でしょうか。
もしそうならば、それはCommandButtonとは呼ばないようです。マクロの記録では Shapes("Button 1")となっていました。
そこで、普通に「フォーム」ツールバーの「ボタン」のテキストを表示変更するマクロを作ってみました。
Sub Auto_Open()
For a = 1 To 10
Worksheets(1).Shapes("Button " & a).Select
Selection.Characters.Text = Worksheets(a + 1).Range("A1")
Next
End Sub
ただ、ksjqaさんはWorkbook_OpenというイベントマクロやPrivate Sub~もご存知の方なので「フォーム」ツールバーの「ボタン」のことではないのかもしれませんが。
もし質問の意味が違ったのでしたら、また補足して下さい。
わかりやすい回答をありがとうございました。
「フォーム」ツールバーではなく、「コントロール」ツールバーのボタンのことだったのですが、tamagawa49さんの説明で、「フォーム」ツールバーの「ボタン」の扱いが理解できました。
皆さんの回答を試していてお礼が遅れた事をお詫びします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
都道府県穴埋めゲーム
都道府県の名前を1人1つずつ投稿してください。全ての都道府県が出たら締め切ります!
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには
その他(プログラミング・Web制作)
-
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
-
4
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
エクセルVBAで、ボタンの文字を変えたい
Excel(エクセル)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
UserForm1.Showでエラーになります。
工学
-
9
Excelマクロでオプションボタンの名前の変更をしたい
Excel(エクセル)
-
10
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
11
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
12
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
13
ExcelVBAで質問です。Workbook_openイベントが発生し
その他(Microsoft Office)
-
14
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
15
Excelコマンドボタン名を変数にして背景色を変更
サーバー
-
16
フォームコントロールから作ったボタンのデザイン
Excel(エクセル)
-
17
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
18
エクセルVBAでIME入力モードの制御
Excel(エクセル)
-
19
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
20
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
コマンドボタンやイメージにマ...
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
テラパッドを使ってるんですが...
-
VBA でのボタンの移動について
-
VBA CommandButtonの文字ずれ
-
SPREADコマンドボタン発生イベ...
-
VBAで多数のプログラムを一つの...
-
C#で動的に作ったtextboxを消す。
-
Excel VBA Application.caller...
-
C(C++) コントロール(ボタ...
-
Excel VBA実行中にワークシート...
-
他のアプリケーションとの連携
-
MFC Timerについて
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
ASP.Net ラベルの内容をすぐに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
アイコンとボタンの違い
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
閉じると「+」になり開くと「-...
-
VBAのボタンの位置が変わって困...
-
[Excel VBA]コマンドボタンの入...
-
VB.net でトグルボタンを実現し...
-
Access VBA でデータペーストを...
-
セルをマクロのボタンにしたい。
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
プロシージャからイベントをコ...
-
ASP.Net ラベルの内容をすぐに...
-
TextBoxでEnterキーを押すと、...
-
他フォームのクリックイベント取得
おすすめ情報