• ベストアンサー

特定のシートが削除されたときにラベルを非表示にしたい

現在Excel VBAでの開発を行っている者です。 そこで、特定のシートを削除したときにラベルを非表示したいのですが、どうしたらいいかわかりません。 どなたかご教授していただけないでしょうか??

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.4

#シートのCalculateイベントを使えばもうちょっと簡単かな... 新規シートを追加してダミーシートとし、A1セルのみに =特定のシート!IV65536 という感じで監視したいシートの参照式を入れ、 ダミーシートのシートモジュールに以下。 (ダミーシートは非表示でも可) Option Explicit Private Sub Worksheet_Calculate()   Dim ws As Worksheet   Dim x As String      With Range("A1")     If IsError(.Value) Then       x = .Formula       On Error Resume Next       Set ws = Sheets(Mid$(x, 2, InStr(x, "!") - 2))       On Error GoTo 0       If ws Is Nothing Then         .ClearContents         MsgBox "削除"       Else         Application.EnableEvents = False         .Formula = "=" & ws.Name & "!IV65536"         Application.EnableEvents = True         Set ws = Nothing       End If     End If   End With End Sub

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

特定のシートを削除したタイミングを捉えたいという事でしょうか? シート削除イベントそのものは無いですから、代替的なものを仕込む事になります。 例えばThisWorkbookモジュールのSheetActivateイベントが発生した時に『特定のシート』の存在チェックをするなど。 または 'ThisWorkbookモジュール Const chk = "特定のシート" Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)   If Sh.Name = chk Then     Application.OnTime Now, Me.CodeName & ".shtchk"   End If End Sub Private Sub shtchk()   Dim ws As Worksheet      On Error Resume Next   Set ws = Sheets(chk)   On Error GoTo 0   If ws Is Nothing Then     MsgBox "削除"   Else     Set ws = Nothing   End If End Sub こんなのでもいいかもしれません。 #SheetDeactivateが発生しないVBAコードでの削除には対応していません & #シート名変更の場合を考慮していませんが。

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ラベルって、コントロールの1種のラベルですか。 >開発を行っている と言うレベルの方なら、質問にしっかり書いてください。 それだとして エクセル関連で (2)シート上に貼り付けたもの (2)ユーザーフォームに貼り付けたもの の2つがあり、扱いに差が有るのをご存知か。 ーーー >特定のシートを削除したときに シートが削除されたことを捕まえるイベントが無いようだが。 VBAレベルでは、難しいのではないか。 何かの機会(削除された機会ではない)に現シート名と、有る時期に(例えばオープン時に)記録したシート名と比べて、なくなっているシート名を割り出すことはできても、削除されたタイミングに合わせられない。 シート挿入、行・列の挿入・削除も捉えるイベントがVBAでは無いようだ。 回答が出るか興味あり。

全文を見る
すると、全ての回答が全文表示されます。
  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

ラベル、って何ですか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA 特定のシートでイベントを実行 

    EXCEL2010 VBAで特定のシートがアクティブになるとイベントを実行したいのですが可能でしょうか? 現在はすべてのシートでイベントが実行されてしまいます。

  • EXCEL VBA  特定シート以外のシート削除

    同一のブック内に存在する複数シートのうち任意のシートのみを削除することはVBAで可能でしょうか? (例)  消したくないシート:TEMP1、TEMP2の2シート  消したいシート:1、2、3....といった連番シート (VBAで作成したシート) 環境は、WIN XP PRO でEXCEL2003を使用しています。 宜しくお願い致します。

  • 特定のシートを削除する

    いつもお世話になっています。 INパラメータがA~Zあり、各パラメータごとにシートを作成し、 その中に各パラメータごとのデータ表を作成しています。 このとき、表示するデータが全くないパラメータのシートを 削除したいのですが、出来るのでしょうか? 最初にシートをパラメータの数だけ作り、(シート名はパラメータの名前と同じ) そこでシート分ループさせています。 表示データの有無はプログラムにより、判断できます(Flg=1が返ってきます)。 Flg=1ならそのシート(パラメータA)を削除して次のシート(パラメータB)へ・・・ といった感じなのですが・・・。 シートの削除の仕方は載っているのですが、特定のシートを削除するには どうしたらいいのでしょう。 どなたか知ってる方、教えてください!!

  • 複数のシートにまたがる列の削除について

    こんばんは、複数のシートを選択して特定の列を削除するVBAについて質問させてください。Sheet1とSheet2のA~C列を削除したく、以下のVBAを入力しましたが、削除されるのはSheet1のA~C列のみでSheet2に同様の処理が行われません。 手作業でやると複数のシートを選択のうえ列の削除ができるので、VBAでできないということはないと思うのですが、どのように記述すればよいのでしょうか・・・?!どなたかご教授よろしくお願いいたします! Sheets(Array("Sheet1","Sheet2")).Select Range("A:C").Delete Shift:=xlToLeft

  • エクセルの任意のシートをフォームに表示したい。

    いつも参考にさせていただいています。 宜しくお願いします。 Access2002,Excel2002でタイトルのようなことを 実現しようと思ってます。 現在やっていることは、 フォームに「非連結オブジェクトフレーム」を用意して エクセルファイルを表示させているのですが 任意のシートを表示させたいと思っています。 手動で任意のシートをアクティブにしてフォームを再表示すると アクティブなシートがオブジェクトに表示されるのですが、、 VBAの操作によりシートをアクティブにする ことは可能でしょうか。 なにかお気づきの方が居られましたら ご教授宜しくお願いします。

  • ExcelのVBAでシート内にある、特定の罫線だけを削除したい。

    ExcelのVBAでシート内にある、特定の罫線だけを削除したい。 2003を使用しています。ここのサイトで罫線に関する質問をし解決に至りましたが、もうひとつお願いしたいことがあるので、よろしくお願いします。 ある範囲(例としてA1セルからM50セルの範囲)内に色々な罫線や図形が表示されているのですが、 その中から特定(例として太さ5ポイントの普通の赤罫線)だけを削除するコードの記述が、色々試してみたのですが出来ませんでした。 どんな記述や展開をして書くのかもイメージがわきません。 よろしくお願いいたします。

  • Excelシートの改行削除

    環境:Excel2000+VBA Excelシートに入っているセル内の改行を全て削除 したいのですが、よい方法はないでしょうか? よろしくお願いします。

  • VBA シートの削除について

    VBAのコードの書き方について質問があります。 コマンドボタンをクリックした時、シート1~シート4を削除をしたいのですが、 シート1~シート4が存在するかはその時の状況で異なります。 シート1が存在し、シート2~4が存在しないのであればシート1だけ削除する場合もあれば シート1~シート4がすべて無い場合もあります。 いずれのケースにしてもボタンクリック後は”シートを削除しました”のメッセージを 表示させたいのですが、どうコードを書けばよいでしょうか? VBA初心者なのでコードを教えていただけると助かります。 よろしくお願いします!

  • 【VBA】特定シート 名前編集・削除を禁止したい

    いつも大変お世話になっております。 Excel2003を使用しております。 今回VBAでやりたいことは、 特定シートの名前編集・削除を禁止したいのです。 シート名 「データ」 シート名 「一覧」 この二つを名前編集・削除禁止にしたいと思っております。 保護する方法も考えたのですが、 現在様々なプログラムでシートを利用しており、 保護をかけると色んなフォーム上で保護解除をしないといけません。 データの参照・編集が出来ないと困るのです。 保護をかける 以外で何か、方法はありますでしょうか? 以上、 回答よろしくお願い致します。

  • エクセルのSheet削除について

    お尋ねします。 VBAでマクロを作成中に画像のように「Sheet15」というのが作成されました。 アイコンは「ThisWorkBook」と同じです。 右クリックして「オブジェクトの表示」を選んでも他のシートが表示されます。 エクセルの画面上にはシートとして表示されていません。 削除したいのですが、 右クリックで表示されるメニューの「Sheet15の解放」はグレーアウトして押せません。 削除する方法があれば教えてください。 マクロでの削除でも結構です。 よろしくお願いします。