akeyb1958

akeyb1958

PR

サイド自由欄

設定されていません。

カレンダー

2021.08.18
XML
カテゴリ: カテゴリ未分類
ExcelVBAのFormでコンボボックスやリストボックスを使う時に
必ずといっていいくらいに「UserForm_Initialize」というプロシージャ文を使います。
ここに各ボックスのデータのリストが表示されるように記述するのですが
Formが開いた時に起動するイベントプロシージャの為
ちょっとややこしい事をやると困った事になりました。

複数のコンボボックスやリストボックス、テキストボックスをFormに配置
これらに入力してリストに追加。FormをUnloadさせ、再び表示させる。
入力したボックスのリストは登録したものを含めて表示されます。

でも困った事が起きます。

ではUnloadさせないで、登録作業だけすると
当たり前ですが登録したものがリスト上に反映されないのです。

この相反した事を何とか成立させたいと思案しました。
様々考えましたが、結局「UserForm_Initialize」のコード再度を起動させない限り
この問題は解決できないという結論に達しました。

「UserForm_Initialize」のコードを再度記述する?
「面倒だな。」と
これは同じForm上のプロシージャなので
試しにcallで「UserForm_Initialize」記述して動くんじゃないかな?
という事で試したら・・・なんと動くじゃありませんか。

ということは同一のオブジェクト上のプロシージャは呼び出せるという事ですね。

固定観念はダメですね。

目的のものは出来たのですが、入力し、登録作業したボックス上の値が消えてしまうんですね。
リストが再作成され、その中に含まれると消えてしまうようです。
この解決には、変数を使って「自己保持」をさせました。
・・・別の何かよい方法があるもかもしれませんが。


それで何とか完成。

ExcelVBAで帳票作成システムつくります。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2021.08.18 11:58:12
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: