EXCEL2007でのシート選択方法について

このQ&Aのポイント
  • EXCEL2003ではユーザーフォーム上のオプションボタンとチェックボックスの選択状況に応じてシートを選択する方法がありましたが、EXCEL2007では「コンパイルエラー:プロジェクトおよびライブラリが見つかりません」というエラーが出ます。
  • EXCEL2007でのシート選択方法を教えてください。
  • EXCEL2007で、ユーザーフォーム上のオプションボタンとチェックボックスに応じてシートを選択する方法を教えてください。
回答を見る
  • ベストアンサー

シートの条件選択

EXCEL2003で下記のようにユーザーフォーム上のオプションボタンと チェックボックスの選択状況に応じてシートを選択するようにしていました が、EXCEL2007で実行したら、「sel_sw」のところで 「コンパイルエラー:プロジェクトおよびライブラリが見つかりません」 とエラーが出てしまいました。 EXCEL2007ではどのように記述すればよいか、教えていただけますでしょうか。 よろしくお願いします。 --------------------------------------------------------------- Private Sub 印刷する_Click() UserForm9.Hide With UserForm9 If .OptionButton1 = False And .OptionButton2 = False Then MsgBox ("オプションボタン選択") GoTo error End If If .CheckBox2 = False And .CheckBox3 = False And .CheckBox4 = False And .CheckBox5 = False Then MsgBox ("チェックボックスを選択") GoTo error Else sel_sw = True If .CheckBox2 = True And .OptionButton1 = True Then Sheets("A").Select sel_sw sel_sw = False End If If .CheckBox2 = True And .OptionButton2 = True Then Sheets("B").Select sel_sw sel_sw = False End If If .CheckBox3 = True And .OptionButton1 = True Then Sheets("C").Select sel_sw sel_sw = False End If If .CheckBox3 = True And .OptionButton2 = True Then Sheets("D").Select sel_sw sel_sw = False End If If .CheckBox4 = True Then Sheets("E").Select sel_sw sel_sw = False End If If .CheckBox5 = True Then Sheets("F").Select sel_sw sel_sw = False End If End If End With Exit Sub error: UserForm9.Show End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

http://pasofaq.jp/office/access/compileerror.htm こういうことでしょうか? えーと、良くわからないのですが、 sel_swの宣言はどこにされているのですか? Dim sel_sw As Boolean のような宣言が見当たりません… それでも大丈夫なやつですかね?

mshons
質問者

お礼

ご指摘ありがとうございます! sel_swの宣言がありませんでした。 Dim sel_sw As Boolean で、解決しました。 ありがとうございました!

関連するQ&A

  • エクセル チェックBOXを使用してシート選択 保存

    皆様お世話になります。 昨日は一括保存をご教授していただきありがとうございました。 早速ですが今回は、チェックboxを使用してシートを選択しそれをCSV形式にて保存したいのですがどうもうまくいきません。 ご教授よろしくお願いします Private Sub 保存_Button1_Click() If CheckBox5.Value Or CheckBox6.Value Or CheckBox7.Value Then bl = 5 If CheckBox5.Value Then Sheets("管理").Select Cells.Select Range("a1").Select 保存_start End If bl = 5 If CheckBox6.Value Then Sheets("カット").Select Cells.Select Range("a1").Select 保存_start End If bl = 5 If CheckBox7.Value Then Sheets("ノズル").Select Cells.Select Range("a1").Select 保存_start End If MsgBox "通信終了" Unload Me Else MsgBox "何も選択されていません" End If End Sub Private Sub 保存_start() Cells.Select Selection.Copy Workbooks.Add ActiveSheet.Paste Application.CutCopyMode = False Application.DisplayAlerts = False ActiveWorkbook.SaveAs Flname = "c:\" & ActiveSheet.Name & "-" & CStr(Format(Date, "yymmdd") & _ "-" & Format(Time, "hhmmss")), FileFormat:=xlCSV ActiveWindow.Close ThisWorkbook.Activate Application.DisplayAlerts = True End Sub

  • 条件判断について教えて下さい。

    VB2008を使用している初心者です。 現在、RichTextBoxとCheckBoxとそれに対応したTextBoxを準備し、CheckBoxがTrueのTextBox.TextをRichTextBoxに代入するプログラムを作成しています。RichTextBoxにはCheckBoxをTrueにした分だけ複数のTextBox.Textを代入させています。ここまでのプログラムは下記コードで問題なく作動しています。 Button1を押す。 RichTextBox1.Clear() If Me.CheckBox1.Checked = True Then RichTextBox1.Text = TextBox1.Text End If If Me.CheckBox2.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox2.Text End If ・ ・ ・ If Me.CheckBox20.Checked = True Then If RichTextBox1.Text <> "" Then RichTextBox1.Text = RichTextBox1.Text & "・" End If RichTextBox1.Text = RichTextBox1.Text & TextBox20.Text End If ここで問題なのですが、RichTextBox1への代入完了後、FalseにしたCheckBoxを再度True(代入時に選択したもののみ)にするコードをButton2に作成したいのですが上手くいきません。例えば下記のコードですと、RichTextBoxに1つだけTextBoxが入っている場合しかCheckBoxのTrueが戻りません。 If Me.CheckBox1.Checked = False Then If RichTextBox1.Text = TextBox1.Text Then Me.CheckBox1.Checked = True End If End If ・ ・ ・ If Me.CheckBox20.Checked = False Then If RichTextBox1.Text = TextBox20.Text Then Me.CheckBox2.Checked = True End If End If これはIf RichTextBox1.Text = TextBox1.Text Thenにしてしまっているためだと思いますが、これをどう修正したら良いかわかりません。もしお時間がある方みえましたらご教授お願いいたします。

  • if文からcase文への置き換え

    ピクチャボックスをクリックしたら、チェック ボックスがチェックされるメソッドを作りたいと 思っています。 Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click,PictureBox2.Click 'ここから If sender Is PictureBox1 Then If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If ElseIf sender Is PictureBox2 Then If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End If 'ここまで End Sub 上記のif文をCase文に置き換えたくて、 'ここから Select Case sender Case PictureBox1 If Me.CheckBox1.Checked = False Then Me.CheckBox1.Checked = True Else Me.CheckBox1.Checked = False End If Case PictureBox2 If Me.CheckBox2.Checked = False Then Me.CheckBox2.Checked = True Else Me.CheckBox2.Checked = False End If End Select 'ここまで 上記のように書き換えたのですが、エラーが出てしまいます(ビルドは通るのですが)。 Case文の使い方が間違っているんだとは思いますが、どこがどう 間違っているのがよくわかりません。 ご教授いただけないでしょうか?

  • MsgBoxの表示について

     ユーザーフォームのチェックボックスの選択後(複数選択可)コマンドボタンのクリックで各チェックボックスのマクロを実行するようにしていますが、下記コードだとマクロの実行後もMsgBoxが表示されてしまいますが(当たり前ですが)、これをコマンドボタンのみをクリックした場合のみMsgBoxを表示させることは可能でしょうか?お教え下さい。 Windows7・SP1 Office2010・SP2 Private Sub CommandButton1_Click() Sheets("編集").Select If CheckBox9 Then Unload UserForm6 変更後編集データの保存 End If If CheckBox10 Then Unload UserForm6 変更前編集データの保存 End If If CheckBox11 Then Unload UserForm6 指定勤務有あり編集データの保存 End If If CheckBox12 Then Unload UserForm6 指定勤務有なし編集データの保存 End If If CheckBox2 Then Unload UserForm6 日付データの保存 End If If CheckBox3 Then Unload UserForm6 個人情報の保存 End If MsgBox ("保存する編集データを選択してください。"), vbExclamation End Sub

  • 入力エラー時にメッセージを出す方法

    下記コードなのですが、入力ミスでもフォームが開いてしまいます。 5602、5662以外の場合、メッセージを出して、正しく入力を求めるようにしたいのですが、どのようにしたらいいでしょうか。 Sub 推進区() s = InputBox("納入便を選択して下さい。" & Chr(13) & _ "推進区:5602" & Chr(13) & "推進区:5662", "納入便選,s) If s = "5602" Then UserForm1.OptionButton3.Visible = False UserForm1.TextBox1.Value = 5602 Else UserForm1.OptionButton3.Visible = True UserForm1.TextBox1.Value = "5662" End If UserForm1.Show End Sub

  • エクセルVBA 最終行にデータを追加する

    エクセルのユーザーフォームにチェックリストを用意しました CheckBox1~CheckBox5まであり、 CheckBox1をクリック(true)にすると、セルに“あ” CheckBox2をクリック(true)にすると、セルに“い” CheckBox3をクリック(true)にすると、セルに“う” CheckBox4をクリック(true)にすると、セルに“え” CheckBox5をクリック(true)にすると、セルに“お” を反映させようと思っています たとえば、 ・CheckBox1のみクリック(true)で、A1に“あ” ・CheckBox2のみクリック(true)で、A1に“い” ・CheckBox1、CheckBox3をクリック(true)で、A1に“あ”、A2に“う” ・CheckBox2~CheckBox5をクリック(true)で、A1に“い“、A2に“う“、A3に”え”、A4に“お” といった感じで、選んだチェック項目について、A列においてA1から次々とデータを入力しようとしています そこで、 sheets1.Range("A:A").Clear If CheckBox1.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "あ" End If If CheckBox2.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "い" End If If CheckBox3.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "う" End If If CheckBox4.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "え" End If If CheckBox5.Value = True Then sheets1.Cells(Rows.Count, 1).End(xlUp) = "お" End If としました (実際は、CheckBoxの名前が1~5と数字ではないので、forは使いませんでした) すると、 CheckBox1~CheckBox5を全てクリック(true)しても、A1に“お”が反映されるだけで“あ”~”え”が入力されません どうすれば、思い通りになるのでしょうか 初歩的な質問だと思うのですが、よろしくお願いします

  • エクセルのマクロで繰り返し処理

    当方マクロ初心者ですが下記のマクロをCheckBox0~CheckBox23についてコピーするセルを変化させながら繰り返し処理を行いたいのですが、簡単なループ処理で行えますか? 教えていただければ幸いです。 If CheckBox0.Value = True Then Worksheets("sheets1").Activate  行 = Worksheets("sheets1").Range("e7")   行 = 行   Worksheets("sheets1").Range("g7:t7").Copy Windows("Books1.xls").Activate Sheets("sheets1").Select Range(Cells(行, 15), Cells(行, 15)).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False End If

  • エクセルでユーザーフォーム

    エクセルでユーザーフォームやActiveXコントロールを使ったことがないので悩んでいます。ユーザーフォームを呼び出したとき、表示されるオプションボタンの状態をワークシート上の値で設定したいのです。一応以下のようなコードでも大丈夫なようです。 質問は、以下のようにすべてのオプションボタンを列挙しなくとももっと簡単に記述する方法を教えていただきたいのです。また書き方が変だというご指摘があればそれもよろしくお願いします。 Private Sub UserForm_Initialize()   Select Case Sheets("Sheet1").Range("L3").Value     Case 1: Me.OptionButton1.Value = True     Case 2: Me.OptionButton2.Value = True     Case 3: Me.OptionButton3.Value = True     Case 4: Me.OptionButton4.Value = True     Case 5: Me.OptionButton5.Value = True     Case 6: Me.OptionButton6.Value = True     Case Else      Me.OptionButton1.Value = False      Me.OptionButton2.Value = False      Me.OptionButton3.Value = False      Me.OptionButton4.Value = False      Me.OptionButton5.Value = False      Me.OptionButton6.Value = False   End Select End Sub

  • エクセル2000でのVBAについて

    下記のVBAを書いているのですが、3つのIF文を1つに まとめたいのですが教えてください。 If Range("E16") = "申請者" Then Sheets("ログイン").Select Sheets("報告票").Select ActiveSheet.Unprotect Range("M3:U7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select If Range("E16") = "所属長承認" Then Sheets("報告票").Select ActiveSheet.Unprotect Range("D3:L7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select If Range("F16") = "所属長承認" Then Sheets("報告票").Select ActiveSheet.Unprotect Range("BS3:CA7").Select Selection.Locked = False Selection.FormulaHidden = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True '数式バー表示 Application.DisplayFormulaBar = True Range("H9").Select Else: Sheets("ログイン").Select end if end if end if

  • エクセル チェックボックスの解除について(VBA)

    YES/NOを入力させる為の下記のVBAにおいて、チェックボックス1をチェックすると、アの部分でチェックボックス2の解除を行う関係で?、シート上でチェックボックス2を操作していないのにもかかわらず、勝手にCheckBox2_Click()に入り、命令文イを実行してしまいます。 ただ単にSub CheckBox1_Click()のルーチンの最後までの処理で終わりたいのですが、どうしたらよいのでしょうか。 Private Sub CheckBox1_Click() If CheckBox1 = True Then Sheets("sheet1").Range("A1") = 1 Sheets("sheet1").Range("A2") = 0 CheckBox2 = False・・・ア Else Sheets("sheet1").Range("A1") = "" End If End Sub Private Sub CheckBox2_Click() If CheckBox2 = True Then Sheets("sheet1").Range("A1") = 0 Sheets("sheet1").Range("A2") = 1 CheckBox1 = False Else Sheets("sheet1").Range("A2") = ""・・・イ End If End Sub

専門家に質問してみよう