
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で質問しましょう!
似たような質問が見つかりました
- エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる
- Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた
- 複数csvを横に追加していくマクロについて
- 【ご教示ください】VBAの記述方法がわかりません。
- EXCELのVBAについて
- 3つのプロシージャをまとめたら実行時エラー発生で対応不能
- Excel VBAどこが間違ってますか?
- Excleマクロ セル値の代入と文字列の結合について
- ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。
- 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには
その他(プログラミング・Web制作)
-
エクセルVBAで、ボタンの文字を変えたい
Excel(エクセル)
-
-
4
コマンドボタンのキャプションが文字化けしたりする原因
Visual Basic(VBA)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
7
Excelコマンドボタン名を変数にして背景色を変更
サーバー
-
8
UserForm1.Showでエラーになります。
工学
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
Accessユーザーフォームでコマンドボタンのcaptionについてで
その他(Microsoft Office)
-
11
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
14
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
15
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
18
On ErrorでエラーNoが0
Visual Basic(VBA)
-
19
Excelマクロでオプションボタンの名前の変更をしたい
Excel(エクセル)
-
20
エクセルVBAのIf,Then 構文でOr条件とAnd条件の結合方法?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
VBA(エクセル)で自動的にボタン...
-
コマンドボタンやイメージにマ...
-
C#で動的に作ったtextboxを消す。
-
回数のカウント
-
CommandButtonのCaptionを変化...
-
+ボタンの名称は?
-
ボタンをマウスで押し続けたと...
-
EXCEL2003 オプションボタン複...
-
ユーザーフォーム中の入力順番...
-
VB 電卓 数字キーを押して...
-
VB.NETでマウスクリックイベン...
-
ASP.Net ラベルの内容をすぐに...
-
vbMsgBoxHelpButtonの使い方
-
excel シート上のボタンが動かない
-
アクセスのフォームで入力日を...
-
ボタンをクリックするとエラー...
-
delphiでボタンを押せなくしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
フォームの再読み込み
-
VBA CommandButtonの文字ずれ
-
セルをマクロのボタンにしたい。
-
Access VBA でデータペーストを...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
VBAのボタンの位置が変わって困...
-
Excel マクロ 閉じるボタン
-
VBA IE ダウンロード ダイアロ...
-
Excel VBA Application.caller...
-
CommandButtonのCaptionを変化...
-
VB.net でトグルボタンを実現し...
-
ボタン
-
VBAでオプションボタンによって...
-
C#で動的に作ったtextboxを消す。
-
VB.NETでマウスクリックイベン...
-
ボタンをマウスで押し続けたと...
おすすめ情報