システムwiki

Office:ワークシートのフォームコントロールグループボックス内のフォームコントロールオプションボタン

OssieMa 解決済 最終更新日:2020-08-19 21:30

必要なのは具体的にグループボックス内であり、単にグループ化されているわけではないことに注意してください.

返信リスト(回答:6)

1 #
Andreas

アンドレアス.

応答1# ->にスキップ
2 #
OssieMa

ワークブックの例を次のリンクにアップロードしました.実際に私がやりたいことを実行するコードがいくつかありますが、ワークシートのすべてのオプションボタンをループして、関連するグループボックスを識別する必要があります.

オプションボタンのグループ化(ボタンを右クリックしてCtrlキーを押しながらグループ化に必要な他のボタンを選択して再度右クリックするなど)をテストしたと言う以外は、プロジェクトの詳細には触れません.グループを選択します).ループできます
グループ内のボタンを介して表示されますが、ワークシートでオプションボタンを選択すると、Excelはすべてのオプションボタンを1つの大きなグループと見なすというバグがあるように見えます..
そうするつもりはないが、そうするつもりだ.

ワークシートのすべてのオプションボタンをループして、オプションボタンのクリックで呼び出されるコードに従ってグループボックスを特定できます.ただし、ワークシート上のオプションボタンの数が多いため、処理速度は遅くなります.(コントロールの数が少ない サンプルワークブックの
は時間を示していません).各グループボックス内のオプションボタンをループするだけのコードを望んでいます.

プロジェクトでは、選択が行われた後、グループ内のすべてのボタンを無効にし、ユーザーが元の選択を変更できないようにする必要があります.コントロールがロックされたワークシートを保護しても、オプションボタンを使用できるため、これは達成されません.
変更される.

応答2# ->にスキップ
3 #
OssieMa

またしてもアンドレアス

以前の返信でリンクに新しいワークブックをアップロードしました.すでにダウンロードしている場合は、もう一度ダウンロードすることをお勧めします.グループボックスのオプションボタンを識別するために、コードを(より短いversionに)変更しました.しかし、それでも
グループボックス内のオプションボタンだけでなく、ワークシート上のすべてのオプションボタンをループする必要があります.

応答3# ->にスキップ
4 #
Andreas

こんにちはOSSIEMAC、

グループボックス内のオプションボタン内のオプションボタンへのアクセスを直接取得する方法はわかりません.

オプションボタンの名前を示すセルを参照する隠された名前を含むセットアップシートを使用して問題を解決します.

設計時に一度だけ作成する必要がありますので、実行時に高速アクセスを取得できます.次のようにしてください:

ワークシートを追加して設定する

オプションの非表示シート設定

VBAエディタを開き、このコードを通常のモジュールに追加します.

option
sub setup_addbuttons()
ワークシートとしてのws
in vim grpboxとしてのDim grpbox
grpboxとしてDIM grpbox
grprngとして
grprng、ages aとしてのOptrng文字列
WS= ActiveSheetを設定する
WS.OptionButtonsの各OptBTNのすべてのボタンを介してループ


grpbox= optn.groupbox
'Buildを構築する有効な名前の構文 "sheet.optionbutton"
key=置換(ws.name&"."&grpbox.name、 ""、 "_")
'は列aに既に存在しますか?
set grprng=.columns(1).find(キー)
grprngが何もない場合は
'' 'no、add

grprng=.reange( "a"&rows.count).end(xlup).Offset (1)
grprng=キー


















br>'no、add
set optrng= grprng.offset(、columns.count-1).end(xltoleft).OFFSET(、1)
optrng= optbtn.name




次へ

end sub
sub setup_createNames()
grprng範囲として、 OPTRNG AS RANGE
名前を付けてname as name



'すべての既存の名前を削除する






No.「各行に新しい隠し名を作成する」grprng( "a2"、."(" an "&rows.count).end(xlup))
setoptrng= range(grprng.offset (,1)、grprng.offset(、columns.count-1).end(xltoleft))
set n=.names.add(grprng.value、optrng、false)
n.name= grprng.value



end sub

Sheet1に入り、setup_addbuttons

を実行します.

他のシートがオリジナルのファイルにそのシートに切り替えて、マクロを再度実行している場合

setup_createnamesを1回

既存のクリックルーチンをクリックしてください.

optionButton_click()
worksheetとしてDIM WS
grpBoxとしてムットボックスとしてDim optBTN
grpboxとして
DIM grpBox
grprngとして
DIM grprng範囲として、これは
set>WS= ActiveSheet

optbtn= ws.optionbuttons(application.caller)を設定します.
grpbox= optbtn.groupboxを設定します
key= replace(ws.name&"."&grpbox.name、 ""、 "_")grprng=ワークシートを設定します(" setup ").names(キー).referstRounge





grprng

optbtn= ws.optionbuttons(this.value)
debug.print optbtn.name
次へ
end sub

動作をテストする

はパフォーマンスが十分ですか?

andreas.

応答4# ->にスキップ
5 #
OssieMa

Andreasに感謝します.これには多くの労力を費やしており、大変感謝しています.

それを見て、明日ご連絡します.午後9時30分に近づいているので、今夜はこれ以上あまり行いません.

グループボックスのオプションボタンをループできないだけで何かが足りないのではないかと思いました.少なくともあなたはそれが可能ではないように見えることを私のために確認しました.

応答4# ->にスキップ
6 #
OssieMa
こんにちはアンドレアス、
問題は解決しました.これで、グループボックスのオプションボタンだけをループできます.
各グループボックス内のオプションボタンをグループ化し、グループをループするコードを機能させました.
以前の投稿で、オプションボタンがグループ化されていても、Excelではすべてのボタンが1つのグループとして扱われるため、グループを使用できないことを示しました.

コードでグループ名を抽出することは可能ですが、ワークシートでボタンをクリックすると、異なるグループに属していても、ワークシートの他のすべてのボタンがオフになります.ただし、グループボックス内のオプションボタンを使用すると、
問題が解決され、グループボックス内のオプションボタンをグループ化することで、コードの問題が解決されました.

フォームコントロールの理由は、私がこれを実行している人がWindowsを備えたPCで動作することを望んでいることと、MacおよびMacがActiveXコントロールを受け入れないことです.Macの変換は(必要な場合)行いません.受取人
両方のタイプのコンピュータまたは個別のApplicationの1つのApplicationであるかどうかは問題ではありませんが、コードをできるだけ類似させようとすることには利点があります.

FYI.次のリンクにあるサンプルワークブックのVer 2.