|
▼Jaka さん:
出来の悪い生徒で申し訳ありません。
でも、本当にありがとうございます。もう少し勉強させてください。
>たぶん、簡単な間違いだと思うんですが、シート上に
>表示 → ツールバー → コントロールツールボックス(アクティブXコントロール)
>のOptionButtonを使っていますか?
ここで間違っていました。→UserForm1の「ツールボックス」のオプションボタンを使っていました。コントロールツールボックスの意味が分かりませんでした。というか、思い過ごしていました。またこれに関して、全く知識がありませんでした。恥ずかしい次第ですが。・・・ユーザーフォームを使わない理由があるのでしょうね。
>また、私の確認用コードは標準モジュールで良いです。
はい、順調に確認できました。ありがとうございます。「プションボタン1・・・3など順調に選択したボタンの表示がMsgBoxに出てきます。
>りんさんのコードで、Private Sub CommandButton1_Click()の方は、
>シートのCommandButtonでも、ユーザーフォーム上のCommandButtonのどちらでからでも動きました。
りんさんのコードを再度させていただきました。シートのコマンドボタンからOKでした。また、ユーザーフォーム上のCommandButtonも順調に動きました。(でも、ユーザーフォームを出すために、UserForm1.Show のコマンドボタンを作る必要がありますね)
コントロールツールボックスやユーザフォーム上のツールボックスの用途やシート上の
フォームの使い分けなどをこれから勉強しなくては・・・と思いました。
>今一歩、どういった状態で使用しているのか、OptionButtonの種類等が解らないので、リストボックスを使った物を作ってみました。
大変ありがとうございます。
>シート上に、アクティブXコントロールの「ListBox」1つ。
>リスト作成用、シート選択用にアクティブXコントロールの「CommandButton」2つ。
ここのListBoxやCommandButtonは・・・→表示 → ツールバー → コントロールツールボックスのやり方で問題ないですね。
>が、"Sheet1"にあるとして、
>下記コードは、ボタン等があるSheet1のシートモジュールに。
はい、やりました。
結果は、MsgBoxに「Book1が、開いていません。」となりました(CommandButton 2つとも)。ListBoxは何ら変化ないです。
また、一寸どこかで間違っていますね。また明日挑戦してみます。分からなかったらまた聞かせていただきたいと思います。
>
>*************
>Const 対象ブック名 As String = "Book1" '←対象ブック名に変更してください。
対象ブック名に変更・・・?これはどういう意味なんでしょうか?
>'シートリスト作成
>Private Sub CommandButton1_Click()
> Dim Wb As Workbook, Sh As Worksheet
> For Each Wb In Workbooks
> If Wb.Name = 対象ブック名 Then
> With ThisWorkbook.Worksheets("Sheet1").OLEObjects("ListBox1").Object
> .Clear
> For Each Sh In Wb.Worksheets
> .AddItem Sh.Name
> Next
> End With
> Exit Sub
> End If
> Next
> MsgBox 対象ブック名 & "が、開いてません。"
>End Sub
>
>'ブックとシート選択
>Private Sub CommandButton2_Click()
> Dim WB2 As Workbook, ShName As String
> On Error Resume Next
> Set WB2 = Workbooks(対象ブック名)
> Err.Clear
> On Error GoTo 0
> If Not WB2 Is Nothing Then
> With ThisWorkbook.Worksheets("Sheet1").OLEObjects("ListBox1").Object
> If .ListIndex < 0 Then
> Set WB2 = Nothing
> Exit Sub
> End If
> ShName = .List(.ListIndex)
> End With
> Workbooks(対象ブック名).Sheets(ShName).Activate
> ActiveWindow.WindowState = xlNormal
> Set WB2 = Nothing
> Exit Sub
> End If
> MsgBox 対象ブック名 & "が、開いてません。"
>End Sub
それから、再度お聞きしたい事が在ります。
10月3日の
貴殿のご指摘いただいた下の内容は、あえて変更する必要は無いですね。
Flgの意味が分から無いもので又、勉強させていただきます。
コードはしっかりと残しておいて、又の機会に質問させていただきたく
考えています。
(10月3日の貴殿からのご解答です)
こんにちは。
部分的にしか見てないけれど...。
こうしたらどうでしょうか?
> '対応するシート名が無いとエラーになるので注意
> wb.Worksheets(wsn).Activate
↓
Dim WBK As Worksheet, Flg As Boolean
For Each WBK In wb.Worksheets
If WBK.Name = wsn Then
Flg = True
Exit For
End If
Next
If Flg = True Then
wb.Worksheets(wsn).Activate
Else
msgbox wsn& "シートがありません。"
End If
Jakeさんに長々とご指導いただきありがとうございます。
感謝しています。特に今回は「コントロールツールボックス」に触れ少し理解ができた事は大きな収穫だったと思っています。
失礼します。
|
|