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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) エラーコード1004 6 2022/06/09 14:12
このQ&Aを見た人はこんなQ&Aも見ています
-
とっておきの「夜食」教えて下さい
真夜中に小腹がすいたときにこっそり作るメニュー、こっそり家を抜け出して食べに行くお店… 人には言えない、けど自慢したい、そんなあなたの「とっておきの夜食」を教えて下さい。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
いけず言葉しりとり
はんなりと心にダメージを与える「いけず言葉」でしりとりをしましょう。 「あ」あら〜しゃれた服着てはりますな 遠くからでもわかりましたわ
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
userFormに貼り付けたLabelを変数に
Visual Basic(VBA)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
-
4
マクロ実行時、ユーザーフォームにラベルのテキストが表示されません。
Access(アクセス)
-
5
Excel VBAで、実行時にsheet上のコマンドボタンのCaptionを変更する。
Excel(エクセル)
-
6
エクセルVBA テキストボックスへのセットフォーカスについて
Visual Basic(VBA)
-
7
ラベル内の文字(Caption)を縦表示にする方法
Visual Basic(VBA)
-
8
変数をコントロール型で使用する方法
Visual Basic(VBA)
-
9
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
10
VBA:ユーザフォームのラベルの指定の仕方教えてください。
Visual Basic(VBA)
-
11
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
12
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
13
テキストボックスやラベルのクリア
Visual Basic(VBA)
-
14
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
15
AccessのFormの設定で、開いた時に必ず最大化で表示する方法が分からず困っています
Access(アクセス)
-
16
エクセルVBAでTargetのセルに設定された「名前の定義」の取得方法は?
Excel(エクセル)
-
17
ユーザーフォームで動的(Me.Controls.Add)に作成したコントロールの削除
Visual Basic(VBA)
-
18
どこにもフォーカスを当てたくない
Access(アクセス)
-
19
Accessのリンク先を相対パスにしたい
その他(データベース)
-
20
VBAでユーザーフォームの表示を確認
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
VBAで多数のプログラムを一つの...
-
VBAでオプションボタンによって...
-
他フォームのクリックイベント取得
-
VBA ユーザーフォームラベルキ...
-
Access VBA でデータペーストを...
-
コマンドボタンやイメージにマ...
-
Excel VBAでの図形削除について...
-
perl/tk のScrollbarについて
-
VB2010 クリック数カウント
-
VBA CommandButtonの文字ずれ
-
エクセル VBA
-
EXCEL2003 オプションボタン複...
-
VBでのエラー音の消し方
-
.NET(VB)でボタンの連打を防止...
-
ユーザーフォームに別シートか...
-
回数のカウント
-
MouseDownとMouseMoveイベント...
-
VBA IE通知バーの制御 バー内の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
コマンドボタンやイメージにマ...
-
Excel VBA Application.caller...
-
アイコンとボタンの違い
-
ボタンをマウスで押し続けたと...
-
閉じると「+」になり開くと「-...
-
セルをマクロのボタンにしたい。
-
VBA マクロでの網掛けについて
-
VB.net でトグルボタンを実現し...
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
VBAで多数のプログラムを一つの...
-
プロシージャからイベントをコ...
-
VBA でのボタンの移動について
-
VBAでオプションボタンによって...
-
[Excel VBA]コマンドボタンの入...
おすすめ情報