過去ログ

                                Page     160
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼オプションボタンについて  ぴかる 02/10/2(水) 12:40
   ┣Re:オプションボタンについて  ichinose 02/10/2(水) 14:15
   ┗Re:オプションボタンについて  つん 02/10/2(水) 14:20
      ┗Re:オプションボタンについて  ぴかる 02/10/2(水) 20:44
         ┗Re:オプションボタンについて  ichinose 02/10/2(水) 22:30
            ┗Re:オプションボタンについて  ぴかる 02/10/3(木) 8:28
               ┗Re:オプションボタンについて  ichinose 02/10/3(木) 12:37
                  ┗ヘルプも結構、むずかしいのだぁ〜  ぴかる 02/10/3(木) 20:45

 ───────────────────────────────────────
 ■題名 : オプションボタンについて
 ■名前 : ぴかる
 ■日付 : 02/10/2(水) 12:40
 -------------------------------------------------------------------------
   みなさん、こんにちは。

今回は、オプションボタンについて質問させて頂きます。状況は以下の通りです。

・オプションボタンが10ヶ存在しています。(名称は、加工A〜加工J)
・選択したオプションボタンにてライン名を所得したい。

単純に行うと下記マクロとなりますよね。
  If 加工A = True Then ライン = "加工A"
  If 加工B = True Then ライン = "加工B"
  If 加工C = True Then ライン = "加工C"
  If 加工D = True Then ライン = "加工D"
  If 加工E = True Then ライン = "加工E"
  If 加工F = True Then ライン = "加工F"
  If 加工G = True Then ライン = "加工G"
  If 加工H = True Then ライン = "加工H"
  If 加工I = True Then ライン = "加工I"
  If 加工J = True Then ライン = "加工J"

10行もかかるのでこんな風にならないかと・・・。
  ライン = 選択されたオプションボタン名 ← マクロ化したいと思っております。

可能でありましたら、よろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : ichinose  ■日付 : 02/10/2(水) 14:15  -------------------------------------------------------------------------
   ▼ぴかる さん:
こんにちは。

>・オプションボタンが10ヶ存在しています。(名称は、加工A〜加工J)
>・選択したオプションボタンにてライン名を所得したい。
>
>単純に行うと下記マクロとなりますよね。
>  If 加工A = True Then ライン = "加工A"
>  If 加工B = True Then ライン = "加工B"
>  If 加工C = True Then ライン = "加工C"
>  If 加工D = True Then ライン = "加工D"
>  If 加工E = True Then ライン = "加工E"
>  If 加工F = True Then ライン = "加工F"
>  If 加工G = True Then ライン = "加工G"
>  If 加工H = True Then ライン = "加工H"
>  If 加工I = True Then ライン = "加工I"
>  If 加工J = True Then ライン = "加工J"
>
>10行もかかるのでこんな風にならないかと・・・。
>  ライン = 選択されたオプションボタン名 ← マクロ化したいと思っております。
>
>可能でありましたら、よろしくお願いいたします。
クラスモジュールで可能かと・・・。
クラスモジュール(Class1)に、
'========================================================
Public WithEvents opbtn As MSForms.OptionButton
Private Sub opbtn_Click()
  UserForm1.ライン = opbtn.Name
End Sub
'======================================================

当該フォームモジュールに
'=========================================================
Public ライン As String
Dim optionbttn(1 To 4) As New Class1
'========================================
Private Sub CommandButton1_Click()
  MsgBox ライン
'コマンドボタンクリックの例です
End Sub
'======================================================================
Private Sub UserForm_Initialize()
 Dim abc
 abc = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
 For i = 1 To 4
  With optionbttn(i)
   Set .opbtn = Controls("加工" & abc(i - 1))
   End With
  Next
End Sub
'=====================================================================
Private Sub UserForm_Terminate()
For i = 1 To 4
 Set optionbttn(i) = Nothing
 Next
End Sub
'=====================================================================

こんなのでいかがでしょうか?
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/10/2(水) 14:20  -------------------------------------------------------------------------
   ぴかる さん、こんちゃ♪

オプションボタンのオブジェクト名を連番にして、(opt1〜opt10)
キャプションを「加工A」・・・にして、

こんな感じではどうでしょうか?

  Dim i As Long
  For i = 1 To 5 ’面倒だったので5こしか作らなかった(^^;
    If Me.Controls("opt" & i).Value = True Then
      MsgBox "ライン = " & Me.Controls("opt" & i).Caption
    End If
  Next i

オブジェクト名を「加工A」にしないとダメなのかな?
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : ぴかる  ■日付 : 02/10/2(水) 20:44  -------------------------------------------------------------------------
   ichinoseさん、つんさん、こんばんにゃ♪

すんません。たいへん、おそくなっちゃいました。いつも、ありがとうございます。

>ichinoseさん
トライさせていただきましたが、なんでかユーザーフォームが表示されません。
「指定されたオブジェクトが見つかりません」が出てしまいます。
フォーム内のコードを削除すると表示されます。何かセッティングがあるのかな?。
多分、どっかでわたくしがチョンボしてると思いますが・・・。
ポイントがありましたら、よろしくお願いします。

おはなしチェンジ
印刷禁止フォローありがとさんでした。助かりました。

>つんさん
うまく動作いたしました。だけど・・・。

>オブジェクト名を「加工A」にしないとダメなのかな?
そう、ダメなの・・・。できたら、なんですけどね。
オブジェクト名は、キャプションとほぼおんなじにするのが、あたいのこだわりなんです。

>さいごに
一行ですむおいしいコードがあるのかなと思ってました。世の中、そんなに甘くないっすね。
もし、おいしいコードがありましたら、"よろしく^2"です。
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : ichinose  ■日付 : 02/10/2(水) 22:30  -------------------------------------------------------------------------
   ▼ぴかる さん:
こんばんは。

>すんません。たいへん、おそくなっちゃいました。いつも、ありがとうございます。
>
>>ichinoseさん
>トライさせていただきましたが、なんでかユーザーフォームが表示されません。
>「指定されたオブジェクトが見つかりません」が出てしまいます。
>フォーム内のコードを削除すると表示されます。何かセッティングがあるのかな?。
>多分、どっかでわたくしがチョンボしてると思いますが・・・。
>ポイントがありましたら、よろしくお願いします。
VBEの「ツール」---「デバッグイン」を繰り返すとエラー個所まで進みますが・・。
再度、ひかるさんの投稿と見比べてみました。
'===============================================================
>当該フォームモジュールに
>'=========================================================
>Public ライン As String
>Dim optionbttn(1 To 4) As New Class1
'        ここ、1 to 10に訂正してね、私は4でテストしてしまったので

>'========================================
>Private Sub CommandButton1_Click()
>  MsgBox ライン
>'コマンドボタンクリックの例です
>End Sub
>'======================================================================
>Private Sub UserForm_Initialize()
> Dim abc
> abc = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J")
'       ↑これ全角のA,B,Cですが、半角でしたか?
> For i = 1 To 4
'   ↑ここも 1 to 10
>  With optionbttn(i)
>   Set .opbtn = Controls("加工" & abc(i - 1))
'   全角・半角の違いなら、ここで止まってるはず
>   End With
>  Next
>End Sub
>'=====================================================================
>Private Sub UserForm_Terminate()
>For i = 1 To 4
'   ↑ここも 1 to 10
> Set optionbttn(i) = Nothing
> Next
>End Sub
>'=====================================================================
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : ぴかる  ■日付 : 02/10/3(木) 8:28  -------------------------------------------------------------------------
   ichinoseさん、おはようございます。

詳しいご説明ありがとうございました。修正したら、バッチグゥ〜でした。
でもコードの意味は、正直分かってません。(?_?) クラスとの兼ね合いも???。

すんません。ひとつだけ教えてください。
ユーザーフォームイベントのヘルプの見方が分からないんです。TerminateをF1押しても「キーワードがないよ」と叱られます。ヘルプをうまく使ってスキルアップしたいと思ってます。そしてichinoseさんコードの解析をしようと思ってます。よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:オプションボタンについて  ■名前 : ichinose  ■日付 : 02/10/3(木) 12:37  -------------------------------------------------------------------------
   ▼ぴかる さん:
こんにちは。

>ユーザーフォームイベントのヘルプの見方が分からないんです。TerminateをF1押しても「キーワードがないよ」と叱られます。

私もHELPの使い方が下手なんですが・・・・。
取り合えず、Terminateイベントまで検索は・・・、
VBEで、F1を押して、イルカ君には、「VBA」と入力してます。
すると、Visual Basicのヘルブを表示するという選択が表示されますので、選択します。
これでHELPが立ち上がりますので、目次の「Microsoft Visual Basic リファレンス」をクリックします。
さらに下の項目の「Visual Basic ランゲージリファレンス」をクリックします。
オブシェクトにUserformがありますので、その辺に「Terminateイベント」は書いてあります。

もっと、上手な活用法があると思いますが・・・。
 ───────────────────────────────────────  ■題名 : ヘルプも結構、むずかしいのだぁ〜  ■名前 : ぴかる  ■日付 : 02/10/3(木) 20:45  -------------------------------------------------------------------------
   ichinoseさん、こんばんは。

今日もおそくなってしまいました。すんません。教えて頂いた通りにやってみました。
なんとかゴールしました。ありがとうございました。結構、たいへんでしたけど・・・。
ヘルプのヘルプて無いですかね。とても使いきれそうにもないです。ヘルプも難しいッス。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 160