Page 177 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼トグルボタンのON-OFFをボタン上に表示する方法 MH 02/10/3(木) 21:26 ┗Re:トグルボタンのON-OFFをボタン上に表示する方法 Nakamura 02/10/3(木) 23:29 ┗Re:トグルボタンのON-OFFをボタン上に表示する方法 MH 02/10/4(金) 9:05 ┗Re:トグルボタンのON-OFFをボタン上に表示する方法 Nakamura 02/10/4(金) 23:56 ┗Re:トグルボタンのON-OFFをボタン上に表示する方法 MH 02/10/5(土) 22:07 ┗Re:トグルボタンのON-OFFをボタン上に表示する方法 Nakamura 02/10/6(日) 0:59 ┗Re:よくわかりました MH 02/10/6(日) 7:56 ┗Re大変申し訳ありません もう一つだけ MH 02/10/6(日) 14:34 ┗Re:Re大変申し訳ありません もう一つだけ Nakamura 02/10/6(日) 20:50 ┗Re:Re大変申し訳ありません もう一つだけ MH 02/10/7(月) 22:56 ┗Re:Re大変申し訳ありません もう一つだけ Nakamura 02/10/7(月) 23:24 ┗大変助かりました。ありがとうございました MH 02/10/8(火) 9:08 ┗Re:大変助かりました。ありがとうございました Nakamura 02/10/8(火) 12:54 ─────────────────────────────────────── ■題名 : トグルボタンのON-OFFをボタン上に表示する方法 ■名前 : MH ■日付 : 02/10/3(木) 21:26 -------------------------------------------------------------------------
こんばんは 教えて下さい!! トグルボタンをONにした時ボタン上に「ON」とOFFの時には「OFF」と表示させるには、どうしたらよいですか? もう一つトグルボタンを1〜5まで並べて、ONになっているものをラベル1に表示させるとしたらどうしたらよいでしょうか。 例)1,3,4がONならラベル1に「1,3,4」と表示させる。 |
こんばんは シートのトグルボタンとして こんな感じでどうでしょう? ラベルをLabel1 トグルボタンをToggleButton1〜5として 該当シートモジュールに記述して下さい。 Sub cap_set() Dim tg As Object Dim str As String Application.ScreenUpdating = False For Each tg In OLEObjects With tg If Left(.Name, Len(.Name) - 1) = "ToggleButton" Then If .Object.Value Then .Object.Caption = "ON" str = str & Right(.Name, 1) & "," Else .Object.Caption = "OFF" End If End If End With Next If str <> "" Then Label1.Caption = "「" & Left(str, Len(str) - 1) & "」" Else Label1.Caption = "" End If Application.ScreenUpdating = True End Sub Private Sub ToggleButton1_Click() cap_set End Sub Private Sub ToggleButton2_Click() cap_set End Sub Private Sub ToggleButton3_Click() cap_set End Sub Private Sub ToggleButton4_Click() cap_set End Sub Private Sub ToggleButton5_Click() cap_set End Sub それでは |
▼Nakamura さん: 回答ありがとうございます。 早速やってみたのですが、 For Each tg In OLEObjects で止まってしまうのです。 初心者なもので、改善の方法がよくわかりません。 お手数をおかけして申し訳ありませんが、もう一度ご教授願えればさいわいです。 よろしくお願いします。 >こんばんは > >シートのトグルボタンとして >こんな感じでどうでしょう? > >ラベルをLabel1 >トグルボタンをToggleButton1〜5として >該当シートモジュールに記述して下さい。 > >Sub cap_set() > > Dim tg As Object > Dim str As String > > Application.ScreenUpdating = False > > For Each tg In OLEObjects > > With tg > > If Left(.Name, Len(.Name) - 1) = "ToggleButton" Then > > > If .Object.Value Then > > .Object.Caption = "ON" > str = str & Right(.Name, 1) & "," > > Else > > .Object.Caption = "OFF" > > End If > > End If > > End With > > Next > > If str <> "" Then > > Label1.Caption = "「" & Left(str, Len(str) - 1) & "」" > > Else > > Label1.Caption = "" > > End If > > > Application.ScreenUpdating = True > >End Sub > >Private Sub ToggleButton1_Click() > > cap_set > >End Sub > >Private Sub ToggleButton2_Click() > > cap_set > >End Sub > >Private Sub ToggleButton3_Click() > > cap_set > >End Sub >Private Sub ToggleButton4_Click() > > cap_set > >End Sub > >Private Sub ToggleButton5_Click() > > cap_set > >End Sub > >それでは |
こんばんは、遅くなりました。m(__)m エラーの内容は何ですか? 私のコードはシートのトグルボタンとラベル用です。 ユーザーフォームのトグルボタンとラベルなら ”コンパイルエラー: 変数が定義されていません。” と出るはずです。 その場合は >For Each tg In OLEObjects を For Each tg In Controls として下さい。 それでは |
▼Nakamura さん: ありがとうございました。 おっしゃるとおり、For Each tg In Controlsに書き換えたら動きました。 すみませんもう少し教えて下さい。 Application.ScreenUpdating = False は、どういう意味なのですか? あと、買い換えたFor Each tg In OLEObjects と cap_set とはどういう意味なんでしょうか よければ教えて下さい >こんばんは、遅くなりました。m(__)m > >エラーの内容は何ですか? >私のコードはシートのトグルボタンとラベル用です。 >ユーザーフォームのトグルボタンとラベルなら > >”コンパイルエラー: > 変数が定義されていません。” > >と出るはずです。 > >その場合は > >>For Each tg In OLEObjects >を >For Each tg In Controls >として下さい。 > >それでは |
こんばんは >Application.ScreenUpdating = False は画面の更新を抑制する為に入れています。 コードの性格上トグルボタンのどれを押しても 全てのトグルボタンのキャプションを書き換えるので、 ちらつきが出るのを防ぐ為に入れました。 >For Each tg In OLEObjects はシート上にもテキストボックスやリストボックスなどを配置 出来るのはご存知ですか? 表示(V)−ツールバー(T)−コントロールツールボックス で出てきます。 これらのActiveX コントロールの名前をOLEObjects コレクションで取得 しています。 シート上にある、ActiveX コントロールの数だけFor文で繰り返す と言う事です。 ユーザーフォームのコントロールの場合はControlsコレクションになります。 >cap_set は、単なるプロシージャの名前です。Testでも何でもかまいません。 ただ、名前から有る程度、動きの想像が付く名前を付けた方が良いでしょう。 Caption Settingを縮めて”cap_set”としました。 それでは |
▼Nakamura さん: ありがとうございました たいへんためになりました >こんばんは > >>Application.ScreenUpdating = False > >は画面の更新を抑制する為に入れています。 >コードの性格上トグルボタンのどれを押しても >全てのトグルボタンのキャプションを書き換えるので、 >ちらつきが出るのを防ぐ為に入れました。 > >>For Each tg In OLEObjects > >はシート上にもテキストボックスやリストボックスなどを配置 >出来るのはご存知ですか? > >表示(V)−ツールバー(T)−コントロールツールボックス > >で出てきます。 >これらのActiveX コントロールの名前をOLEObjects コレクションで取得 >しています。 >シート上にある、ActiveX コントロールの数だけFor文で繰り返す >と言う事です。 >ユーザーフォームのコントロールの場合はControlsコレクションになります。 > >>cap_set > >は、単なるプロシージャの名前です。Testでも何でもかまいません。 >ただ、名前から有る程度、動きの想像が付く名前を付けた方が良いでしょう。 >Caption Settingを縮めて”cap_set”としました。 > >それでは |
▼Nakamura さん: ユーザーフォームに10ぐらいトグルボタンを並べてあって、その1から5について表示させる場合は、For〜nextを使うんだと思うんですが、その前の変数の設定の仕方がよくわからないので教えてもらえないでしょうか For i=1to5 if ToggleButton(i).Value=true なんて感じでよいのでしょうか 申し訳ありませんが、最後にこれだけ教えて下さい >ありがとうございました >たいへんためになりました > >>こんばんは >> >>>Application.ScreenUpdating = False >> >>は画面の更新を抑制する為に入れています。 >>コードの性格上トグルボタンのどれを押しても >>全てのトグルボタンのキャプションを書き換えるので、 >>ちらつきが出るのを防ぐ為に入れました。 >> >>>For Each tg In OLEObjects >> >>はシート上にもテキストボックスやリストボックスなどを配置 >>出来るのはご存知ですか? >> >>表示(V)−ツールバー(T)−コントロールツールボックス >> >>で出てきます。 >>これらのActiveX コントロールの名前をOLEObjects コレクションで取得 >>しています。 >>シート上にある、ActiveX コントロールの数だけFor文で繰り返す >>と言う事です。 >>ユーザーフォームのコントロールの場合はControlsコレクションになります。 >> >>>cap_set >> >>は、単なるプロシージャの名前です。Testでも何でもかまいません。 >>ただ、名前から有る程度、動きの想像が付く名前を付けた方が良いでしょう。 >>Caption Settingを縮めて”cap_set”としました。 >> >>それでは |
こんばんは こんな感じです。 For i = 1 To 5 With Me.Controls("ToggleButton" & i) If .Value = True Then .Caption = "ON" Else .Caption = "OFF" End If End With Next i それでは |
▼Nakamura さん: ありがとうございました できれば、表示の方も知りたかったのですが いろいろやってみたのですがうまくいかないので・・・ 1〜10あるうちの1〜5だけlabelに表示させるのって 無理ですかね 長々とすみませんでした。 大変助かりました >こんばんは > >こんな感じです。 > > For i = 1 To 5 > > With Me.Controls("ToggleButton" & i) > > If .Value = True Then > > .Caption = "ON" > > Else > > .Caption = "OFF" > > End If > > End With > > Next i > >それでは |
こんばんは 最初のご質問の内容で トグルボタンが10個になり、その内5個の トグルボタンにON、OFFを反映させ、 Labelに表示したいと言う事でしょうか? それなら最初のコードcap_setを以下の様にしてみて下さい。 Sub cap_set() Dim i As Integer Dim str As String Application.ScreenUpdating = False For i = 1 To 5 With Me.Controls("ToggleButton" & i) If .Value = True Then .Caption = "ON" str = str & i & "," Else .Caption = "OFF" End If End With Next i If str <> "" Then Label1.Caption = "「" & Left(str, Len(str) - 1) & "」" Else Label1.Caption = "" End If Application.ScreenUpdating = True End Sub それでは |
▼Nakamura さん: こんにちは 長々とおつきあいいただき、ありがとうございました。 思うように動くようになりました。 ありがとうございました。 もっと、コードの意味がわかるように勉強します。 だけど、VBAのフォームに関する解説本て少ないですよね。 ともかく、ありがとうございました。 >こんばんは > >最初のご質問の内容で >トグルボタンが10個になり、その内5個の >トグルボタンにON、OFFを反映させ、 >Labelに表示したいと言う事でしょうか? >それなら最初のコードcap_setを以下の様にしてみて下さい。 > >Sub cap_set() > > Dim i As Integer > Dim str As String > > Application.ScreenUpdating = False > > For i = 1 To 5 > > With Me.Controls("ToggleButton" & i) > > If .Value = True Then > > .Caption = "ON" > str = str & i & "," > > Else > > .Caption = "OFF" > > End If > > End With > > Next i > > If str <> "" Then > > Label1.Caption = "「" & Left(str, Len(str) - 1) & "」" > > Else > > Label1.Caption = "" > > End If > > > Application.ScreenUpdating = True > >End Sub > >それでは |
こんにちは ユーザフォームを勉強するなら ”かんたんプログラミング Excel VBA コントロール・関数編 大村あつし著” がお奨めです。 それでは |