[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オプションボタンの値の変更』(インドの魔王)
ワードを使用して、オプションボタンが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.