過去ログ

                                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」と表示させる。
 ───────────────────────────────────────  ■題名 : Re:トグルボタンのON-OFFをボタン上に表示する方法  ■名前 : Nakamura  ■日付 : 02/10/3(木) 23:29  -------------------------------------------------------------------------
   こんばんは

シートのトグルボタンとして
こんな感じでどうでしょう?

ラベルを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

それでは
 ───────────────────────────────────────  ■題名 : Re:トグルボタンのON-OFFをボタン上に表示する方法  ■名前 : MH  ■日付 : 02/10/4(金) 9:05  -------------------------------------------------------------------------
   ▼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
>
>それでは
 ───────────────────────────────────────  ■題名 : Re:トグルボタンのON-OFFをボタン上に表示する方法  ■名前 : Nakamura  ■日付 : 02/10/4(金) 23:56  -------------------------------------------------------------------------
   こんばんは、遅くなりました。m(__)m

エラーの内容は何ですか?
私のコードはシートのトグルボタンとラベル用です。
ユーザーフォームのトグルボタンとラベルなら

”コンパイルエラー:
 変数が定義されていません。”

と出るはずです。

その場合は

>For Each tg In OLEObjects

For Each tg In Controls
として下さい。

それでは
 ───────────────────────────────────────  ■題名 : Re:トグルボタンのON-OFFをボタン上に表示する方法  ■名前 : MH  ■日付 : 02/10/5(土) 22:07  -------------------------------------------------------------------------
   ▼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
>として下さい。
>
>それでは
 ───────────────────────────────────────  ■題名 : Re:トグルボタンのON-OFFをボタン上に表示する方法  ■名前 : Nakamura  ■日付 : 02/10/6(日) 0:59  -------------------------------------------------------------------------
   こんばんは

>Application.ScreenUpdating = False

は画面の更新を抑制する為に入れています。
コードの性格上トグルボタンのどれを押しても
全てのトグルボタンのキャプションを書き換えるので、
ちらつきが出るのを防ぐ為に入れました。

>For Each tg In OLEObjects

はシート上にもテキストボックスやリストボックスなどを配置
出来るのはご存知ですか?

表示(V)−ツールバー(T)−コントロールツールボックス

で出てきます。
これらのActiveX コントロールの名前をOLEObjects コレクションで取得
しています。
シート上にある、ActiveX コントロールの数だけFor文で繰り返す
と言う事です。
ユーザーフォームのコントロールの場合はControlsコレクションになります。

>cap_set

は、単なるプロシージャの名前です。Testでも何でもかまいません。
ただ、名前から有る程度、動きの想像が付く名前を付けた方が良いでしょう。
Caption Settingを縮めて”cap_set”としました。

それでは
 ───────────────────────────────────────  ■題名 : Re:よくわかりました  ■名前 : MH  ■日付 : 02/10/6(日) 7:56  -------------------------------------------------------------------------
   ▼Nakamura さん:
ありがとうございました
たいへんためになりました

>こんばんは
>
>>Application.ScreenUpdating = False
>
>は画面の更新を抑制する為に入れています。
>コードの性格上トグルボタンのどれを押しても
>全てのトグルボタンのキャプションを書き換えるので、
>ちらつきが出るのを防ぐ為に入れました。
>
>>For Each tg In OLEObjects
>
>はシート上にもテキストボックスやリストボックスなどを配置
>出来るのはご存知ですか?
>
>表示(V)−ツールバー(T)−コントロールツールボックス
>
>で出てきます。
>これらのActiveX コントロールの名前をOLEObjects コレクションで取得
>しています。
>シート上にある、ActiveX コントロールの数だけFor文で繰り返す
>と言う事です。
>ユーザーフォームのコントロールの場合はControlsコレクションになります。
>
>>cap_set
>
>は、単なるプロシージャの名前です。Testでも何でもかまいません。
>ただ、名前から有る程度、動きの想像が付く名前を付けた方が良いでしょう。
>Caption Settingを縮めて”cap_set”としました。
>
>それでは
 ───────────────────────────────────────  ■題名 : Re大変申し訳ありません もう一つだけ  ■名前 : MH  ■日付 : 02/10/6(日) 14:34  -------------------------------------------------------------------------
   ▼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”としました。
>>
>>それでは
 ───────────────────────────────────────  ■題名 : Re:Re大変申し訳ありません もう一つだけ  ■名前 : Nakamura  ■日付 : 02/10/6(日) 20:50  -------------------------------------------------------------------------
   こんばんは

こんな感じです。

  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

それでは
 ───────────────────────────────────────  ■題名 : Re:Re大変申し訳ありません もう一つだけ  ■名前 : MH  ■日付 : 02/10/7(月) 22:56  -------------------------------------------------------------------------
   ▼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
>
>それでは
 ───────────────────────────────────────  ■題名 : Re:Re大変申し訳ありません もう一つだけ  ■名前 : Nakamura  ■日付 : 02/10/7(月) 23:24  -------------------------------------------------------------------------
   こんばんは

最初のご質問の内容で
トグルボタンが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

それでは
 ───────────────────────────────────────  ■題名 : 大変助かりました。ありがとうございました  ■名前 : MH  ■日付 : 02/10/8(火) 9:08  -------------------------------------------------------------------------
   ▼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
>
>それでは
 ───────────────────────────────────────  ■題名 : Re:大変助かりました。ありがとうございました  ■名前 : Nakamura  ■日付 : 02/10/8(火) 12:54  -------------------------------------------------------------------------
   こんにちは

ユーザフォームを勉強するなら

”かんたんプログラミング Excel VBA コントロール・関数編 大村あつし著”

がお奨めです。

それでは
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 177