[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オプションボタンの値の変更』(インドの魔王)
ワードを使用して、オプションボタンが30個ほどあります。それぞれに点数を持たせて選択をした場合に選択した合計を表示したいのです。
オプションボタンは2〜4つほどグループ化し1つしか選択できません。
グループは10個あります。
各グループでの点数を合計して自動でラベルに合計を表示したいのです。
VBAで作成しておりますが、オプションボタンにtrueから数値変換する方法が分かりません。
教えていただけると幸いです。
具体的には
Group1 Optionbutton(OB)1は0点 OB2は5点、OB3は10点
GRoup2 OB4は0点、OBは5点、OBは10点
…
Group10
OB2とOB5を選択したときに合計10点と表示
わかりずらいですが、よろしくお願いします。
< 使用 Excel:Excel2019、使用 OS:Windows10 >
https://www.google.com/search?q=vba+true+%E6%95%B0%E5%80%A4
(わからん) 2022/06/29(水) 08:24
杓子定規な事をしようとするなら 定数宣言してグループ毎にプロパティプロシージャ設定する。とかなんでしょうけど、 手っ取り早くは、各Optionbuttonのtagプロパティにでも持ち点書いとけば拾い易いんでないでしょうか?
(白茶) 2022/06/29(水) 08:33
エクセルの学校で質問する内容かどうか再検討ください。
(作業員) 2022/06/29(水) 09:51
お。なんか終わったっぽいですね。 せっかくExcelの板だし、UserForm上での簡単な例でも置いときますか。
Option Explicit Private Const OPTVAL_A! = 0 '持ち点を定数定義 Private Const OPTVAL_B! = 5 Private Const OPTVAL_C! = 10 Private OB1 As MSForms.OptionButton Private OB2 As MSForms.OptionButton Private OB3 As MSForms.OptionButton Private OB4 As MSForms.OptionButton Private OB5 As MSForms.OptionButton Private OB6 As MSForms.OptionButton Private WithEvents Button1 As MSForms.CommandButton
Private Property Get Group1() As Long '各グループのチョイスをプロパティとして定義(杓子定規な方) If OB1.Value Then Group1 = OPTVAL_A ElseIf OB2.Value Then Group1 = OPTVAL_B ElseIf OB3.Value Then Group1 = OPTVAL_C End If End Property Private Property Get Group2() As Long If OB4.Value Then Group2 = OPTVAL_A ElseIf OB5.Value Then Group2 = OPTVAL_B ElseIf OB6.Value Then Group2 = OPTVAL_C End If End Property
Private Function OptionTotal() As Long 'Tagの持ち点を合計する関数(手っ取り早い方) Dim c As MSForms.Control For Each c In Me.Controls If TypeOf c Is MSForms.OptionButton Then If c.Value Then OptionTotal = OptionTotal + Val(c.Tag) End If Next End Function
Private Sub Button1_Click() Dim m As String m = m & "Group1:= " & Group1 & vbCrLf '杓子定規な方の利用 m = m & "Group2:= " & Group2 & vbCrLf m = m & "OptionTotal:= " & OptionTotal '手っ取り早い方の利用 MsgBox m End Sub
Private Sub UserForm_Initialize() Set OB1 = Me.Controls.Add("Forms.OptionButton.1", "OB1") Set OB2 = Me.Controls.Add("Forms.OptionButton.1", "OB2") Set OB3 = Me.Controls.Add("Forms.OptionButton.1", "OB3") Set OB4 = Me.Controls.Add("Forms.OptionButton.1", "OB4") Set OB5 = Me.Controls.Add("Forms.OptionButton.1", "OB5") Set OB6 = Me.Controls.Add("Forms.OptionButton.1", "OB6") OB4.Left = 72 OB5.Left = 72 OB6.Left = 72 OB2.Top = 18 OB5.Top = 18 OB3.Top = 36 OB6.Top = 36 OB1.GroupName = "G1" 'グループ分け OB2.GroupName = "G1" OB3.GroupName = "G1" OB4.GroupName = "G2" OB5.GroupName = "G2" OB6.GroupName = "G2" OB1.Caption = OB1.Name OB2.Caption = OB2.Name OB3.Caption = OB3.Name OB4.Caption = OB4.Name OB5.Caption = OB5.Name OB6.Caption = OB6.Name OB1.Tag = OPTVAL_A 'Tagに持ち点設定しておく OB2.Tag = OPTVAL_B OB3.Tag = OPTVAL_C OB4.Tag = OPTVAL_A OB5.Tag = OPTVAL_B OB6.Tag = OPTVAL_C Set Button1 = Me.Controls.Add("Forms.CommandButton.1", "Button1") Button1.Top = 54 Button1.Caption = Button1.Name End Sub
(白茶) 2022/06/30(木) 08:50
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.