
Excel のユーザーフォームに複数のラベルを設置しました。
この複数のラベルのCaptionプロパティを一括で変換したいと思い
次のようなプロージャを考えました。
まだテスト段階なので、ユーザーフォーム上に「ラベル名更新ボタン」を設置して
このボタンをクリックすることで次のプロージャを実行します。
Private Sub ラベル名更新ボタン_Click()
Dim ws As Worksheet
Set ws = Worksheets("サンプル") '「サンプル」sheet(データベース)の1行目の内容を一括でCaptionに設定したい。
Dim n As Long
n = WorksheetFunction.CountA(ws.Range("1:1"))
Dim i As Long
For i = 1 To n
With MyForm.Controls("Label" & i) 'ラベル名は Label1, Label2,…となっている
.Caption = ws.Cells(1, i)
End With
Next
End Sub
これで、「ラベル更新ボタン」をクリックすると、
画面上ではラベルの文字列が一括変換されます。
しかし、ユーザーフォーム編集画面にもどると、Caption名は
プロージャの実行前の状態に戻ってしまいます。
(というか、Subプロージャが終了しない?VBEで実行中の状態のままになっている。■ボタンで終了しないといけない。)
どうしたらよいでしょう?
No.3ベストアンサー
- 回答日時:
こんにちは
ご提示のコードは、単に、実行時にFormのラベルを変更するものです。
ですので、編集画面での値を変更することはできません。
>コーディングを効率よく行おうと思っているので、そのような効果を期待しました。
何が効率がよいのか理解不能ですが、Initialize時にご提示のコードを実行しておけば、ラベルの表示文字列を変更することは可能です。
>不可能なことなのでしょうか?
どうしてもForm編集上のラベル等にアクセスしたいのなら、VBProjectからアクセスすることは可能です。
例えば、
Set obj = ThisWorkbook.VBProject.VBComponents.Item("UserForm1")
Set cntrl = obj.Designer.Controls
とすることで、「Form1」上に配置されたコントロール(群)を得られます。
さらに、
cntrl.Item("Label1")
などで、個々のコントロールにアクセス可能なので、表示文字を始めとする各種プロパティを取得することが可能です。
(こちらの結果は、編集画面に直接反映されますので、十分にご注意ください)
>何が効率がよいのか理解不能ですが、Initialize時にご提示のコードを実行しておけば、ラベルの表示文字列を変更することは可能です。
VBE上で、数多くのラベルのキャプションを1つ1つ手入力で編集するのが面倒と感じて自動化できないかな、と思ったのがきっかけでした。
NBProjectというものがあるのですね!まさに自分が(以前まで)やりたいと思っていたことが実現できる機能だと感じました。ただ、すごく高度で専門的な感じがして、安易に手を出さない方がいいと感じました。
>こちらの結果は、編集画面に直接反映されますので、十分にご注意ください
このように教えていただいて、確かに、自分のやろうとしていたことが、効率的なのか、必要なことなのか、立ち止まって考えることができました。
もっと改善できることかもしれませんが、Initialize時にラベルを取得すれば、データベースの列名を編集したとしても、気にせずフォームを使える、と感じました。
とても秀逸な回答をいただき、ありがとうございます。
No.2
- 回答日時:
VBE画面で作成したユーザーフォームが表示され且つボタンをクリックした『イベント』によって実行された結果ですから、元のユーザーフォーム作成とは関連しないって事ではないかな?
と初級レベルは思います。
No.1
- 回答日時:
>これで、「ラベル更新ボタン」をクリックすると、
>画面上ではラベルの文字列が一括変換されます。
>しかし、ユーザーフォーム編集画面にもどると、Caption名は
>プロージャの実行前の状態に戻ってしまいます。
>(というか、Subプロージャが終了しない?VBEで実行中の状態のままに>なっている。■ボタンで終了しないといけない。)
それは、正しい状態ですよ。
どういう状態にしたいのでしょうか。
ひょっとして、そのマクロを実行したら編集画面のCaptionが書き換わるということを期待しているのでしょうか。それはあり得ません。
>そのマクロを実行したら編集画面のCaptionが書き換わるということを期待しているのでしょうか。
コーディングを効率よく行おうと思っているので、そのような効果を期待しました。
>それはあり得ません。
不可能なことなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
VBA:ユーザフォームのラベルの指定の仕方教えてください。
Visual Basic(VBA)
-
6
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
7
UserForm1.Showでエラーになります。
工学
-
8
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
-
9
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
10
Excel、VBAのユーザーフォームのラベルで変数を…
Excel(エクセル)
-
11
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
12
どこにもフォーカスを当てたくない
Access(アクセス)
-
13
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
14
Excel vba ListBoxについて
Excel(エクセル)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
ユーザーフォームに日付を表示させる方法を教えてください。そして、実行したあとでも日付が変わるようなプ
Visual Basic(VBA)
-
17
ユーザーフォームのラベルに日付を表示させる方法があればお願いします。出来ればコード書いていただけると
Visual Basic(VBA)
-
18
コマンドボタンのキャプションが文字化けしたりする原因
Visual Basic(VBA)
-
19
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
20
VBA シートのボタン名を変更したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
C#プログラムで、ボタンをショ...
-
ボタンをマウスで押し続けたと...
-
ボタンコントロールの改行(Win...
-
VBA IE ダウンロード ダイアロ...
-
VC++ 2005 MFC ボタンの無効化
-
VBA CommandButtonの文字ずれ
-
vb.net タイマーに引数を渡す
-
ASP.Net ラベルの内容をすぐに...
-
見えないボタンを作って、押さ...
-
VBS でユーザーからいくつかの...
-
アイコンとボタンの違い
-
アクセスカウンタでリロード時...
-
PythonでChrome操作について
-
VBAでオプションボタンによって...
-
コマンドボタンやイメージにマ...
-
リストボックス 何も洗濯され...
-
VB6コントロール配列をパラメー...
-
VB6でマルチスレッド?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBAで多数のプログラムを一つの...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
C#プログラムで、ボタンをショ...
-
BorlandC++Builderでのタイマー...
-
[VB.net] ボタン(Flat)のEnable...
-
フォームの再読み込み
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
Access VBA でデータペーストを...
-
C#でSendInputを使ったサンプル...
-
バックスペース機能の作り方
-
アイコンとボタンの違い
-
セルをマクロのボタンにしたい。
-
Excel マクロ 閉じるボタン
-
VBAのボタンの位置が変わって困...
おすすめ情報