• ベストアンサー

エクセル VBA SHeetの隠し

エクセルマクロでThisWorkbookの 記述に下記のようにしました! つまりSheet2を隠す為にしました! Sheet2はマスターなのでそこを使用者に 触らせないように!と思いしましたが・・・ いざ、ファイルを開くと{マクロを有効にする} をクリックしすと{編集の為にロックされています} と表示され読み取り専用になってしまいます! 記述が間違っているのでしょうか? しかもファイルを閉じるとエラー表示され エラーを報告を送信しますか?と必ず表示されます! 他のファイルは問題なく開いたり閉じたり出来ます。 やはり、記述の問題なのでしょうか? 教えて下さい! Private Sub Workbook_Activate() Dim Msg As String, Sn As Variant Sheets("入力").Visible = True Sheets("Sheet2").Visible = False Sheets("グラフ").Visible = True Sheets("入力").Activate UserForm1.Hide End Sub

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

VBEを開くと、プロジェクトエクスプローラが左上にあると思います。 そこのシート(Sheet2)をクリックしたときにプロパティに表示される[Visible]を[0-xlSheetHidden]にしておくとどうなりますか? [Visible]を[2-xlSheetVeryHidden]にしてしまうとマスターとしての参照もできなくなるのでご注意ください。

pop2003
質問者

お礼

既にプロパティに表示される[Visible]を[0-xlSheetHidden] になっています!これはどういう意味なのでしょうか? 以前、解決出来ないです! (^^!)

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

マクロには問題ないと思います ファイルを別のフォルダにコピーして開いてみる ファイルの名前を変更し開いてみる これを試してみてください

pop2003
質問者

補足

2つの方法で試しましたが {他の人が開いています!}と表示され 移動・名前を変える事は出来ないとコメントされます! ThisWorkbookのマクロを消すと名前を 変えて保存は出来ました。 しかし、今度はSheet2がなくなったままで プロバディの画面にはSheet2はあるんですが 変更する時に、今度は開けなくなりました! 教えて下さい どうすれば、回避出来ますか?

関連するQ&A

  • エクセルのマクロを有効にしないと表示しないようにする方法

    エクセルでマクロを有効にしないと、シートが表示されないように設定したいのですが、下記の様に(ほかの方の投稿から)入力すると三行目がエラーになります。素人なので、よくわかりません。どのようにしたら、マクロを有効にしないと全てのシートを表示しないようにできるのでしょうか? ご教授いただけますでしょうか Private Sub Workbook_BeforeClose(Cancel As Boolean) Sheets(\"Sheet1\").Visible = False Sheets(\"Sheet2\").Visible = False ActiveWorkbook.Protect Password:=\"error123\" End Sub Private Sub Workbook_Open() ActiveWorkbook.Unprotect Password:=\"error123\" Sheets(\"Sheet1\").Visible = True Sheets(\"Sheet2\").Visible = True Sheets(\"Sheet1\").Select End Sub

  • エクセルVBA/非表示シートの使い方

    度々よろしくお願いします。 シート(1)が入力用、シート(2)が計算および並び替え用、シート(3)が編集表示用として、シート(2)を常に非表示にしておきたいのです。 非表示のまま、記述の対象とする方法というのはあるのでしょうか?なければ、 Sheets(2).Visible = True ⇔ False で挟む方法が一般的なのでしょうか?

  • エクセルVBAのマクロ文について

    エクセルVBAで、シート上のボタン(フォーム)をクリックすると、UserForm1が表示されてその中のTextBoxに別のシートのセルに入力したいる値を表示させたくて、以下のようにボタン(フォーム)にマクロを入力したのですが、エラーがでてきてうまくいきません。 入力したマクロが間違っているのでしょうか? Sub ボタン1_Click() UserForm1.Show UserForm1.TextBox1 = Sheets("入力").Ranges("D11").Value End Sub すみませんが、ご存知の方、教えてくださいませんか?

  • VBAで全シートを一括選択したい

    VBAを勉強し始めたばかりの初心者です。 エクセルで非表示に切り替えられているシートを 一括で表示に切り替えできるマクロを作成しているのですが 「全シートの選択」方法がわかりません。 ひとつずつのシートなら 下記のマクロでうまくいくのですが・・・ 2行目の「("Sheet3")」を全シートに切り替えれば うまくいくかなって思っているのですけど 方法がわかりません。 よい方法をご存知の方、よろしくご教授願います。 Sub Macro1() Sheets("Sheet3").Visible = True Sheets("Sheet1").Select End Sub

  • エクセルVBAで全シートをアクティブにするには?

    ブック内の全シートを選択するのはSheets.Selectですね。 そうやって選択した全部のワークシートをアクティブにするにはどう記述するのでしょうか? SelectedSheets.Activateや Sheets.Activateではエラーになってしまいました。 何をしたいかといえば、全シートをアクティブにしてページ設定(横向きに)したいのです。

  • 値の受け渡し

    VBAで開くときにマクロを有効にしないとシートがみれないように 【はじめに】【松】【竹】【梅】の4つのシートがあるうち、 保存時に 【はじめに】=表示、 【松】【竹】【梅】=非表示 保存後に 【はじめに】=非表示、 【松】【竹】【梅】=表示 の処理にしましたが、 閉じるで保存ではなくctrl+Sで保存した場合、まだ処理中でも 【竹】【梅】シートで保存した場合【梅】シートが表示されてしまいます。 どのようにしたら使っていたシートに戻れるでしょうか? よろしくお願いします。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("はじめに").Visible = True Sheets("はじめに").Select Sheets("松").Visible = False Sheets("竹").Visible = False Sheets("梅").Visible = False End Sub Private Sub Workbook_afterSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False ★保存をしたシートに戻りたい End Sub Private Sub Workbook_Open() Sheets("松").Visible = True Sheets("竹").Visible = True Sheets("梅").Visible = True Sheets("はじめに").Visible = False End Sub

  • Excel VBA シートの移動について。

    シートの構成は順番に『1』~『10』『メイン』となっているとします。 『メイン』以外は非表示にしています。 しかしメインシートで、番号を指定してマクロを実行すると新しいウインドウを開き指定した番号のシートが表示されるようになっています。 例えばメインシートで『1』を指定して実行すると、ウインドウが2つになり、『1』『メイン』のシートが表示されている状態になります。 問題はここからで、1~10のシートにはマクロでシートセレクトできるようにしているのですが、下記載のマクロを実行すると『メイン』を表示しているウインドウも一緒に表示が変ってしまうことです。 Sub 2に移動() Worksheets("2").Visible = True   '非表示のシートを表示 ActiveSheet.Visible = False      'シートを非表示にする。 Sheets("2").Select End Sub 『1』『メイン』が表示されているときに、『1』で上のマクロを実行すると、『メイン』が表示されているウインドウもシート『2』に移動してしまうことなんです。 これをどうにかして、その実行したウインドウだけ移動するようにしたいのですが、何か方法はないでしょうか? 一応シートの1~10を非表示にせず、表示したままならこの現象は起こらないのですが、どうにかして使用していないシートを非表示にした状態を保ったままやりたいのです。

  • Excel VBAで他のシートを印刷するとき

    シート1からシート2を表示しないで印刷したいんですが下の記述だと一瞬ですがシート2が表示されます、どのようにすればシート1のままシート2を印刷することができるのでしょうか、よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2004/7/23 ユーザー名 : H ' Sheets("Sheet2").PrintOut Copies:=1, Collate:=True End Sub

  • VBAでシートのコピー

    お世話になっております。 VBAの未熟者ですが、個人の資料作成のためのシステムをコツコツと作っております。 今までマクロでシートのコピーをやっていたのですが、コマンドボタンでできるように変更しようとしてうまくいきません。 ファイルAの中にある幾つかのシートの内、シート「個人事業」を「請求書」ファイルの「Sheet2」にコピーしたいのです。その後名前を変更しています。 マクロのプログラムをそのままコピーしてみたのですが、[sheets("個人事業").paste]のところでエラーが出ます。 マクロとコマンドボタンではやはり設定を変更しないといけないのでしょうか?ご教授お願いします。 Private Sub CommandButton1_Click() Sheets("Sheet2").Select Windows("未請求リスト.XLS").Activate Sheets("個人事業").Select Selection.Copy Windows("請求書.xls").Activate Sheets("Sheet2").Select Sheets("個人事業").Paste Sheets("Sheet2").Name = "個人事業請求一覧" Sheets("請求書").Select End Sub 宜しくお願いします。

  • エクセルVBAで複数シートにマクロ実行

    エクセル2000です。 Sub 行列非表示() For i = 2 To 120 If Cells(i, "A").Interior.ColorIndex = 3 Then Cells(i, "A").EntireRow.Hidden = True End If Next i For n = 1 To 50 If Cells(1, n).Interior.ColorIndex = 3 Then Cells(1, n).EntireColumn.Hidden = True End If Next n End Sub 上記マクロを、シートAAAとCCCとEEEに実行する場合、 Sub test() Sheets("AAA").Activate Call 行列非表示 Sheets("CCC").Activate Call 行列非表示 Sheets("EEE").Activate Call 行列非表示 End Sub と書くよりももっとすっきり実行する方法は無いでしょうか? 各シートの非表示対象の行や列はそれぞれことなります。 また Sub 行列非表示 自体も、もっと効率的にやる方法はないでしょうか?

専門家に質問してみよう