Office:ワークシートのフォームコントロールグループボックス内のフォームコントロールオプションボタン
必要なのは具体的にグループボックス内であり、単にグループ化されているわけではないことに注意してください.
返信リスト(回答:6)
アンドレアス.
応答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 subSheet1に入り、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 #OssieMaAndreasに感謝します.これには多くの労力を費やしており、大変感謝しています.
それを見て、明日ご連絡します.午後9時30分に近づいているので、今夜はこれ以上あまり行いません.
グループボックスのオプションボタンをループできないだけで何かが足りないのではないかと思いました.少なくともあなたはそれが可能ではないように見えることを私のために確認しました.
応答4# ->にスキップ6 #OssieMaこんにちはアンドレアス、
問題は解決しました.これで、グループボックスのオプションボタンだけをループできます.
各グループボックス内のオプションボタンをグループ化し、グループをループするコードを機能させました.
以前の投稿で、オプションボタンがグループ化されていても、Excelではすべてのボタンが1つのグループとして扱われるため、グループを使用できないことを示しました.コードでグループ名を抽出することは可能ですが、ワークシートでボタンをクリックすると、異なるグループに属していても、ワークシートの他のすべてのボタンがオフになります.ただし、グループボックス内のオプションボタンを使用すると、
問題が解決され、グループボックス内のオプションボタンをグループ化することで、コードの問題が解決されました.フォームコントロールの理由は、私がこれを実行している人がWindowsを備えたPCで動作することを望んでいることと、MacおよびMacがActiveXコントロールを受け入れないことです.Macの変換は(必要な場合)行いません.受取人
両方のタイプのコンピュータまたは個別のApplicationの1つのApplicationであるかどうかは問題ではありませんが、コードをできるだけ類似させようとすることには利点があります.FYI.次のリンクにあるサンプルワークブックのVer 2.
関連質問
- 複数のテーブルに散布ヘッダーを結ぶ
- VBA/VB.NETで複雑な文字列を作成する方法
- Excel 365
- Excelの "固定オブジェクトが移動する"エラーが表示されます(ただし、オブジェクトが見つかりません).
- Excel-データビジュアライザテーブルをVisioにインポートします
- 企業のExcelモデルへの既存の従業員へのアクセスを制限します
- VBA-Excel-DialogSheets.Show 2021-廃止予定?
- 評価日2式2の式2
- 範囲としてのVBA-BYVALターゲット原因コピーと貼り付け問題
- 2セルをマージするマクロを作成し、合計を取得するためにマージセルをグループ化します.