Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1808 / 13645 ツリー ←次へ | 前へ→

【71782】プロパテイをコードで設定することの質問 悩める老人 12/4/8(日) 14:29 質問[未読]
【71784】Re:プロパテイをコードで設定することの質問 UO3 12/4/8(日) 16:16 発言[未読]
【71785】Re:プロパテイをコードで設定することの質問 UO3 12/4/8(日) 16:27 発言[未読]
【71787】Re:プロパテイをコードで設定することの質問 UO3 12/4/8(日) 16:39 発言[未読]
【71792】Re:プロパテイをコードで設定することの質問 悩める老人 12/4/8(日) 19:53 お礼[未読]
【71794】Re:プロパテイをコードで設定することの質問 ichinose 12/4/9(月) 6:58 発言[未読]

【71782】プロパテイをコードで設定することの質問
質問  悩める老人  - 12/4/8(日) 14:29 -

引用なし
パスワード
    先日質問:【71765】コントロールの追加で ichinose さんに ご教示いただき
多数の同一コントロール追加配置は意図とおりにできましたので そのコントロールにコードで 下記のような例によるCaptionのプロパテイを設定しようとしまし た。 Caption実行結果をMsgBoxに表示させ確認しました。

ところがデザインのユーザフォームを開いてみますとプロパテイウインドCaption も空白コントロールの名前も空白でした。

デザインで多数のボタン配置にはボタン番号だけでは不便で一寸困ってます。
ボタン番号を頼りにあらかじめデザインしておきコード実行すればいいのかもしれませんけど間違いやすいような気がします。

ちなみに「はい」「いいえ」とかを回答する多設問のアンケートを作っています。
よろしくご教示いただきたくお願いいたします。


Public Sub Opt_Caption_Add()
'ユーザフォームのコントロール名前(caption)をプログラムで代入
変数
   UserForm1.OptionButton1.Caption = "はい"
  MsgBox UserForm1.OptionButton1.Caption
End Sub

【71784】Re:プロパテイをコードで設定することの...
発言  UO3  - 12/4/8(日) 16:16 -

引用なし
パスワード
   ▼悩める老人 さん:

こんにちは

そのコードでコントロールを追加した後、

With chek
     .Top = i * h
     .Left = 10
     .Width = 108
     .Height = h
End With

こういうところがありましたよね。
ここでは、動的に生成したコントロールのプロパティを設定しています。
ここで、たとえば
.Caption = "はい" といったようにすればキャプションを設定できます。
はい なのか いいえ なのか、 そのあたりは i の 値で判断することになりますね。

【71785】Re:プロパテイをコードで設定することの...
発言  UO3  - 12/4/8(日) 16:27 -

引用なし
パスワード
   ▼悩める老人 さん:

追加です。

>   UserForm1.OptionButton1.Caption = "はい"
>   MsgBox UserForm1.OptionButton1.Caption

これで、キャプションは変更できましたよね。
でも、実行を終わりVBE画面を見ると、元に戻っていますよね。

これは、実行時に、「そのときだけ」コントロールのプロパティを「テンポラリィ」に変更しています。
それとは異なり、ichinoseさんからご提示があったコードは、特殊なコードで
デザイン画面で人間がデザインする、そのことをVBAで実現しているコードです。

↑でレスしたように、ループの中でキャプションを設定してもよろしいですし、
また、コントロールを追加し終わった後に、別プロシジャで

Sub Test()
  With ThisWorkbook.VBProject.VBComponents("userform1").Designer
    With .checkbox1
      .Caption = "いいえ"
    End With
  End With
End Sub

このように、設定することも可能です。

【71787】Re:プロパテイをコードで設定することの...
発言  UO3  - 12/4/8(日) 16:39 -

引用なし
パスワード
   ▼悩める老人 さん:

レスが細切れになりごめんなさい。
動的に「デザイン」したものを「デザインの変更」するコードをアップしました。
でも、このようなことをせずとも、ichinoseさんのコードで、すでに目的のコントロールは
ユーザーフォーム上に存在していますよね。

なので、それに対して、このような特殊なコードで設定せずとも
デザイン画面で、ご自分でキャプションを変更するのが、一番素直な方法じゃないでしょうか?

たとえば はい と設定したいチェックボックスを「複数」マウスでCtrlキーをおしながら選択し、
プロパティのCaption欄に はい と入れれば、選択したすべてのコントロールに一括で設定できますよ。

【71792】Re:プロパテイをコードで設定することの...
お礼  悩める老人  - 12/4/8(日) 19:53 -

引用なし
パスワード
   ▼UO3 さん:

早速のご教示有難うございました御礼申し上げます。

複数マウスでCtrlキー押しながらの選択でプロパテイウインドCaption設定は一番素直なんですが200個もあるコントロールでは選択誤りや変にドラッグして余計なコントロールができてそれを消したりしているうちにオブジェクト番号が飛んでしまい配列処理するときに面倒な条件判断を避けたかったので大変お手数をおかけしたような質問になってしまいました。ごめんなさい!

【71794】Re:プロパテイをコードで設定することの...
発言  ichinose  - 12/4/9(月) 6:58 -

引用なし
パスワード
   おはようございます。

www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=71767;id=excel

ここで作成したCheckBox1〜220に対して、全部のCaptionを「はい」にしたいなら、

Sub UserForm_update_checkbox()
  Dim i As Long
  With ThisWorkbook.VBProject.VBComponents("userform1").Designer
    For i = 1 To 220
     .Controls("checkbox" & i).Caption = "はい"
    Next
  End With
End Sub

というようにすることができます。

1808 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free