
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も見ています
-
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
Excel VBA ワークシートに貼られたボタン名(Caption)をセルの値から取得するには
その他(プログラミング・Web制作)
-
エクセルVBAで、ボタンの文字を変えたい
Excel(エクセル)
-
-
4
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
5
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
6
オブジェクト名をVBAで指定する方法を教えてくださ
PowerPoint(パワーポイント)
-
7
VBA ユーザーフォーム ボタンクリック後にセルにフォーカス
Visual Basic(VBA)
-
8
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
9
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
10
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
11
複数シートのボタンに同一の動作をさせたい
Excel(エクセル)
-
12
エクセルvba (ByVal Target As Range)について
Excel(エクセル)
-
13
コマンドボタンがあるかどうかを取得するには?
PowerPoint(パワーポイント)
-
14
CommandButtonのCaption(複数行にわたるタイトル)
Excel(エクセル)
-
15
vba userFormのSubを標準モジュールから呼び出す方法を教えてください
Visual Basic(VBA)
-
16
コマンドボタンがデザインモードになったまま
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ボタンをマウスで押し続けたと...
-
C#プログラムで、ボタンをショ...
-
VBA CommandButtonの文字ずれ
-
ユーザーフォームに別シートか...
-
アイコンとボタンの違い
-
VBAで多数のプログラムを一つの...
-
コマンドボタンやイメージにマ...
-
フォームの再読み込み
-
ASP.Net ラベルの内容をすぐに...
-
ボタンコントロールの改行(Win...
-
C#で動的に作ったtextboxを消す。
-
リストボックス 何も洗濯され...
-
プロシージャからイベントをコ...
-
VC++ 2005 MFC ボタンの無効化
-
vb.net タイマーに引数を渡す
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
見えないボタンを作って、押さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
C#プログラムで、ボタンをショ...
-
BorlandC++Builderでのタイマー...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
Access VBA でデータペーストを...
-
C#でSendInputを使ったサンプル...
-
バックスペース機能の作り方
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
Excel マクロ 閉じるボタン
-
VBAのボタンの位置が変わって困...
おすすめ情報