|
Komo さん、おはようございます。
>>たぶん、簡単な間違いだと思うんですが、シート上に
>>表示 → ツールバー → コントロールツールボックス(アクティブXコントロール)
>>のOptionButtonを使っていますか?
>
>・・・ユーザーフォームを使わない理由があるのでしょうね。
当初の質問が、
>▼ハッチ さん:
>はじめまして。初心者です。
>すみませんが、マクロをどう組んだらいいのかがわからないのでどなたか教えてください。
>オプションボタンでA,B,C,D,Eの5人の担当者のボタンを作りました。(ワークシートに直接作ってあります。)
だからです。
>>*************
>>Const 対象ブック名 As String = "Book1" '←対象ブック名に変更してください。
>
>対象ブック名に変更・・・?これはどういう意味なんでしょうか?
何度もしようするブックを保存するときに、Book1.xlsと名づけることはほとんど無いとおもわれます。
また、Book1というのは、エクセルを起動して一つ目に表示される、未保存の状態のブック名なので、すでに準備されているブックを対象とする今回のコードとは縁がないと思われます。
>> Workbooks(対象ブック名).Sheets(ShName).Activate
オプションボタンで分岐して、シートを表示したいブック名を指定して欲しいということですね。
>Flgの意味が分から無いもので又、勉強させていただきます。
FlgはBoolean(ブール)型で宣言されている変数なので、TrueまたはFalseで処理を分岐したい時に使うと便利です。
下の例の場合は、シートの名前をチェックして、一致するものがあればTrueを返します。
シートが見つからなくて最後までループが回りきると、FlgはTrueにならないのでFlgがTrueの時はシートをアクティブに、それ以外の時は見つからなかったとして分岐することができます。
>> '対応するシート名が無いとエラーになるので注意
>> wb.Worksheets(wsn).Activate
> ↓
> Dim WBK As Worksheet, Flg As Boolean
> For Each WBK In wb.Worksheets
> If WBK.Name = wsn Then
wsnと一致するシート名がある場合はFlg=Trueとしてループから抜ける
(見つけたので、ここから先はチェックしなくていい)
> Flg = True
> Exit For
> End If
> Next
ここで分岐
> If Flg = True Then
> wb.Worksheets(wsn).Activate
> Else
> msgbox wsn& "シートがありません。"
> End If
Jaka さん、いろいろありがとうございました。
ちょっとPCにトラブルがあったので、携帯でしか見れませんでした。
|
|