Excel VBA質問箱 IV

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

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


12586 / 13644 ツリー ←次へ | 前へ→

【9742】チェックを入れたフォーム上のオプションボタンの番号の取得 みけ 03/12/16(火) 11:36 質問
【9743】Re:チェックを入れたフォーム上のオプション... INA 03/12/16(火) 11:41 回答
【9752】Re:チェックを入れたフォーム上のオプション... みけ 03/12/16(火) 13:40 質問
【9755】Re:チェックを入れたフォーム上のオプション... Jaka 03/12/16(火) 14:18 回答
【9757】忘れ Jaka 03/12/16(火) 14:32 回答
【9760】Re:忘れ Jカーター 03/12/16(火) 15:01 回答
【9764】Re:忘れ Jカーター 03/12/16(火) 15:20 発言
【9756】Re:チェックを入れたフォーム上のオプショ... INA 03/12/16(火) 14:19 回答
【9759】Re:チェックを入れたフォーム上のオプショ... みけ 03/12/16(火) 14:54 質問
【9762】Re:チェックを入れたフォーム上のオプショ... INA 03/12/16(火) 15:09 回答
【9765】Re:チェックを入れたフォーム上のオプショ... みけ 03/12/16(火) 15:24 質問
【9767】Re:チェックを入れたフォーム上のオプショ... Jカーター 03/12/16(火) 15:43 発言
【9768】Re:チェックを入れたフォーム上のオプショ(... みけ 03/12/16(火) 16:04 質問
【9770】Re:チェックを入れたフォーム上のオプショ(... Jカーター 03/12/16(火) 16:10 回答
【9771】Re:チェックを入れたフォーム上のオプショ(... みけ 03/12/16(火) 16:13 回答
【9773】Re:チェックを入れたフォーム上のオプショ(... Jカーター 03/12/16(火) 16:21 回答
【9781】できました みけ 03/12/16(火) 17:49 お礼
【9748】Re:チェックを入れたフォーム上のオプショ... Jカーター 03/12/16(火) 12:31 発言

【9742】チェックを入れたフォーム上のオプション...
質問  みけ  - 03/12/16(火) 11:36 -

引用なし
パスワード
   先日は、INAさん、JaKaさんありがとうございました。
又、誰か教えてほしいのですが・・・。
チェックを入れたフォーム上のオプションボタンの番号の取得を教えてください。
例えば、フォーム上のOptionButton3にチェックを入れたときB=3というようにそのボタンの番号を取得する方法はないでしょうか。
よろしくお願いします

【9743】Re:チェックを入れたフォーム上のオプショ...
回答  INA  - 03/12/16(火) 11:41 -

引用なし
パスワード
   こんな感じで如何でしょうか?

select case "True"
Case OptionButton1.value
 msgbox"1 にチェック"
Case OptionButton2.value
 msgbox"2 にチェック"
Case OptionButton3.value
 msgbox"3 にチェック"
End Select

【9748】Re:チェックを入れたフォーム上のオプショ...
発言  Jカーター  - 03/12/16(火) 12:31 -

引用なし
パスワード
   こんにちは。
直接の回答ではないですが
オプションボタンをたくさん使う場合
ListBoxで代用できるの知ってますか?
ListBoxのListStyleプロパティを1に
     BackColorプロパティをユーザーフォーム本体と同色に
     Specialeffectプロパティを0にすると
オプションボタンそのものです。
オプションボタンのCaptionをリストにします。

あと
ListIndexを取得するだけで選択された番号が特定できるのが
一番のメリットです。

的はずれでしたらすいません。

【9752】Re:チェックを入れたフォーム上のオプショ...
質問  みけ  - 03/12/16(火) 13:40 -

引用なし
パスワード
   ▼INA さん:
>こんな感じで如何でしょうか?
>
>select case "True"
>Case OptionButton1.value
> msgbox"1 にチェック"
>Case OptionButton2.value
> msgbox"2 にチェック"
>Case OptionButton3.value
> msgbox"3 にチェック"
>End Select
早速、回答頂きありがとうございました。
できれば、A=2というかたちで取得て、他に利用したいのですが・・・
それともう一つ、エクセルシート上では、bが偶数ならiseven(b) = Trueとなると思うのですが、これをVBAで利用したいのですが(偶数か奇数かを確認して、それぞれの処理を行いたいのですが・・)どのようにしたらよいのでしょうか

ex)[フォーム上にOptionButton2があって・・]
 (OptionButton2にチェックが入ったらb=2という感じでボタンの数を所得)
 If isodd(b) = True Then
    Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)
 elseif iseven(b) = True then
    Me.Controls("Frame" & b).BackColor = RGB(0, 0,255)

end if

これを実施させたいのですがうまくいかないのです。
どうかよろしくお願いします。

【9755】Re:チェックを入れたフォーム上のオプショ...
回答  Jaka  - 03/12/16(火) 14:18 -

引用なし
パスワード
   Application.Caller では拾えませんでした。
どうやるんでしたっけ?

こんな感じでもできます。

b = Val(Mid(Me.ActiveControl.Name, 13)) '13は、OptionButtonの文字数ね。
If isodd(b) = True Then
  Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)
ElseIf iseven(b) = True Then
  Me.Controls("Frame" & b).BackColor = RGB(0, 0, 255)
End If

【9756】Re:チェックを入れたフォーム上のオプショ...
回答  INA  - 03/12/16(火) 14:19 -

引用なし
パスワード
   >できれば、A=2というかたちで取得て、他に利用したいのですが・・・
私のはmsgboxにしてありますが、
適当に処理したい内容を記述すればよいのでは?

>それともう一つ、エクセルシート上では、bが偶数ならiseven(b) = Trueとなると
>思うのですが、これをVBAで利用したいのですが(偶数か奇数かを確認して、
>それぞれの処理を行いたいのですが・・)どのようにしたらよいのでしょうか

if b mod 2 = 0 then
 msgbox "b は偶数"
Else
 msgbox "b は奇数"
end if

で良いと思います。


>ex)[フォーム上にOptionButton2があって・・]
> (OptionButton2にチェックが入ったらb=2という感じでボタンの数を所得)
> If isodd(b) = True Then
>    Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)
> elseif iseven(b) = True then
>    Me.Controls("Frame" & b).BackColor = RGB(0, 0,255)
>
>end if
>
>これを実施させたいのですがうまくいかないのです。

OptionButton は何個あるのでしょうか?
それほど多くなければ、select caseで書いてしまった方が簡単です。

それに b って何ですか?
OptionButtonのオブジェクトの番号ですか?
もし、オブジェクト番号の偶数・奇数で処理を分けたいのであれば、

select case "True"
Case OptionButton1.value,OptionButton3.value,OptionButton5.value
 msgbox "奇数のOptionButton にチェック"
Case OptionButton2.value,OptionButton4.value,OptionButton6.value
 msgbox "偶数のOptionButton にチェック"
End Select

で出来ると思いますが・・・

【9757】忘れ
回答  Jaka  - 03/12/16(火) 14:32 -

引用なし
パスワード
   Private Sub OptionButton1_Click() に書いてね。

【9759】Re:チェックを入れたフォーム上のオプショ...
質問  みけ  - 03/12/16(火) 14:54 -

引用なし
パスワード
   すみません。(初心者なもので・・・)
私の書きかたが悪かったみたいです。
フォームの上に複数のFrameをおいて、そのFrameに、それぞれ2このOptionButtonを置きます。Frame上の偶数番号のOptionButtonにチェックが入ったら、チェックの入ったボタンがあるFrameの色が変わるようにしたいのです。式を沢山書くのが面倒なので、できればmodule上に式を書いてやらせたいのですが・・・
(問題点)
 ・チェックが入ったらOptionButtonの番号を取得させる方法が判りません。
 ・取得したボタンの番号が奇数か偶数かを識別させる式が判りません。

以上の内容を聞きたかったのです。
どうか教えてください。
よろしくお願いします。

【9760】Re:忘れ
回答  Jカーター  - 03/12/16(火) 15:01 -

引用なし
パスワード
   おじゃまします。
サブルーチンを作っておいて
各クリックイベントから呼び出してはどうですか?

Private Sub opClick(ByVal b As Long)
  If isodd(b) Then
    Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)
  ElseIf iseven(b) Then
    Me.Controls("Frame" & b).BackColor = RGB(0, 0, 255)
  End If
End Sub
Private Sub OptionButton1_Click()
  Call opClick(1)
End Sub
Private Sub OptionButton2_Click()
  Call opClick(2)
End Sub
Private Sub OptionButton3_Click()
  Call opClick(3)
End Sub
Private Sub OptionButton4_Click()
  Call opClick(4)
End Sub

※atpvbaen.xlseに参照設定を忘れずに
あと色を消すコードはいりませんか?

いっぱい書くのが面倒ならクラスモジュールを使って
イベントプロシージャを一個にすることもできそうです。
(実際に作ってみてはいませんが)

違ったらすいません。

【9762】Re:チェックを入れたフォーム上のオプショ...
回答  INA  - 03/12/16(火) 15:09 -

引用なし
パスワード
   >式を沢山書くのが面倒なので、
>できればmodule上に式を書いてやらせたいのですが・・・
これは出来たのでしょうか?
まず動作するコードを書いて、それをどのようにまとめるかを質問した方が
良いように思えますが・・


> ・チェックが入ったらOptionButtonの番号を取得させる方法が判りません。
チェックが入ったときにイベントが発生するので、
OptionButtonのClickイベントプロシージャに記述する必要はありますね。


> ・取得したボタンの番号が奇数か偶数かを識別させる式が判りません。
「取得したボタンの番号」って何ですか?
オブジェクト名?キャプション?

【9764】Re:忘れ
発言  Jカーター  - 03/12/16(火) 15:20 -

引用なし
パスワード
   すいません。
>※atpvbaen.xlseに参照設定を忘れずに
※atpvbaen.xls
でした。

【9765】Re:チェックを入れたフォーム上のオプショ...
質問  みけ  - 03/12/16(火) 15:24 -

引用なし
パスワード
   ▼INA さん:
>>式を沢山書くのが面倒なので、
>>できればmodule上に式を書いてやらせたいのですが・・・
>これは出来たのでしょうか?
>まず動作するコードを書いて、それをどのようにまとめるかを質問した方が
>良いように思えますが・・
Sub siki()
Dim b As Date
If isodd(b) = True then  (isodd(b)ではエラーになるので他の奇数を判別す              る式を探しています。)

  Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)

end if

>> ・チェックが入ったらOptionButtonの番号を取得させる方法が判りません。
>チェックが入ったときにイベントが発生するので、

OptionButtonのClickイベントプロシージャに記述してオブジェクト名内の番号を
代数bとして取得したいのですが。
Frame1上にオブジェクト名OptionButton1とオブジェクト名OptionButton2があって、OptionButton1にチェックが入ったらb=1という形で数を取得したいのですが・・・
いかがでしょうか

【9767】Re:チェックを入れたフォーム上のオプショ...
発言  Jカーター  - 03/12/16(火) 15:43 -

引用なし
パスワード
   おじゃまします。
9760にレスしときました。
見てくださいね。

【9768】Re:チェックを入れたフォーム上のオプショ...
質問  みけ  - 03/12/16(火) 16:04 -

引用なし
パスワード
   お世話になります。
モジュールに
  Private Sub opClick(ByVal b As Long)
  If isodd(b) Then
    Me.Controls("Frame" & b).BackColor = RGB(255, 0, 0)
  ElseIf iseven(b) Then
    Me.Controls("Frame" & b).BackColor = RGB(0, 0, 255)
  End If
End Sub
を書き込んで
OptionButton1のClickイベントプロシージャに
 Private Sub OptionButton1_Click()
  Call opClick(1)
 End Sub
を書き込んで動かしてみたのですがうまくいきません。
初心者に波無理なのでしょうか

【9770】Re:チェックを入れたフォーム上のオプショ...
回答  Jカーター  - 03/12/16(火) 16:10 -

引用なし
パスワード
   こんにちは。
私のレスの最後に方に書いてある「参照設定」はしましたか?

【9771】Re:チェックを入れたフォーム上のオプショ...
回答  みけ  - 03/12/16(火) 16:13 -

引用なし
パスワード
   ▼Jカーター さん:
>こんにちは。
>私のレスの最後に方に書いてある「参照設定」はしましたか?
訳が分からなかったのでしていません(ごめんなさい!)

【9773】Re:チェックを入れたフォーム上のオプショ...
回答  Jカーター  - 03/12/16(火) 16:21 -

引用なし
パスワード
   こんにちは。
それをしないと分析ツールの関数は使えません。
では別案です。

Private Sub opClick(ByVal b As Long)
  If b Mod 2 = 0 Then
    Me.Controls("Frame" & b).BackColor = vbBlue
  Else
    Me.Controls("Frame" & b).BackColor = vbRed
  End If
End Sub

違ったらすいません。

【9781】できました
お礼  みけ  - 03/12/16(火) 17:49 -

引用なし
パスワード
   お手数をおかけしました。
一応下の方法でできました。
OptionButton1のClickイベントプロシージャに
 Private Sub OptionButton6_Click()
If OptionButton1.Value = True Then
 b = 1
End If
  If b Mod 2 = 1 And Then
      Me.Controls("Frame" & bb).BackColor = RGB(255, 0, 0)
  ElseIf b Mod 2 = 0 Then
       Me.Controls("Frame" & bb).BackColor = RGB(125, 125, 125)
 
    Else: Me.Controls("Frame" & bb).BackColor = RGB(255, 255, 255)
  End If
End Sub
これを各ボタンのClickイベントプロシージャに記入
もっと簡単な方法があれば知りたいのですが。
とりあえず、ありがとうございました

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