[[20220629080406]] 『オプションボタンの値の変更』(インドの魔王) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オプションボタンの値の変更』(インドの魔王)

ワードを使用して、オプションボタンが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


ありがとうございます。
すいません。参考にさせていただきます。
(インドの魔王) 2022/06/30(木) 05:03

 お。なんか終わったっぽいですね。
 せっかく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.