• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBA自作アプリでワークシートを見せたくない!)

VBA自作アプリでワークシートを非表示にする方法

このQ&Aのポイント
  • Excelで作成された簡易な会計ソフトを購入しましたが、ワークシートタブが表示されないため、自作アプリを作りたいと思っています。しかし、非表示にしたいワークシートのデータベースを他の人に見せたくありません。ワークシートを非表示にする方法を教えてください。
  • ワークシートタブが表示されない簡易な会計ソフトを購入しましたが、自作アプリを作る際にワークシートを非表示にする方法がわかりません。ワークシートのデータベースを他の人に見せたくありませんので、エラーなく非表示ができる方法を教えてください。
  • 自作アプリにおいて、ワークシートのデータベースを他の人に見せたくないため、ワークシートの非表示を試みましたが、エラーが発生します。エラーを解決してワークシートを非表示にする方法を教えてください。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

同様な回答はすでに出ていますが、 >「WorkSheetクラスのSelectメソッドが失敗しました」 初歩の初歩の話だと思いますが、シートをSelect しようとするからいけないのです。 Select を使わないといけない場面というものは、本当に少ないものです。逆に、Select を使うというテクニックは、裏技やイベントにしか存在しない手法です。(Excelのみです) なお、Excel VBAというのは、標準モジュールを基本にして使うところが少し特殊です。 例を見てください。 Sheet4 を非表示、または、シートプロパティのVeryHidden にした場合 Sub Test1()  Dim rng As Range  Dim sFind As Variant  Dim iCol As Integer  Dim Ret As Variant  Set rng = Worksheets("Sheet4").Range("A1").CurrentRegion  sFind = 1 '検索値  iCol = 2 '列  Ret = Application.VLookup(sFind, rng, iCol, False)  If Not IsError(Ret) Then   MsgBox Ret  End If End Sub

mimimam77
質問者

補足

まったくの初心者です。本はいっぱい読んだのですが、要するに 「自分がしたいことのため」に、「どれが必要か」がまったくわかっていないのですね。 上記のスクリプトで、うまくいきました。ありがとうございます。 きっと一人で作れるようになるには、まだまだこのサイトにお世話になると思います。 皆様よろしくお願いします。

その他の回答 (3)

  • tossy2011
  • ベストアンサー率17% (3/17)
回答No.3

マクロの先頭で画面の更新をとめてシートを表示 マクロの最後でシートを非表示にして画面の更新再開 でselectも使えると思います。 が一般的にはcellの値を直接参照する方が処理は早いと思います

  • FEX2053
  • ベストアンサー率37% (7991/21371)
回答No.2

「姑息な手段」で簡単に解決する方法。 1.処理するシート以外に、真っ白で何も入力されていないシートを1枚用意する。 2.VBAプログラムの先頭でそのシートを表示させ、Application.ScreenUpdating = False で画面の更新を止めてしまう。 これで、プログラム実行中の処理はすべて見えなくなりますし、デバック中はこの命令をコメントアウトすれば、実際に動作しているところが見えます。で、 3.VBAプログラムの最後尾で、Application.ScreenUpdating = True で画面更新を出来るようにしておく。 例えば、この「白いシート」に「処理時に必要なデータを入力するだけのセル」を設置したり、「しばらくお待ちください」という文字を表示させたり、何なら処理の進行状況をセルに表示させたりすることもできます。

mimimam77
質問者

補足

Application.ScreenUpdating で、高速化を図ると読んだことがありましたが、 「ワークシートをみせたくない」ということと、それが結びつきませんでした。 ありがとうございます。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

「非表示」にしたワークシート及びワークシート上のオブジェクトはもちろん選択不能ですから「Select」は使えません。 どうやって解決するかということですが、SelectとSelectionを使わずに、オブジェクトから直接プロパティやメソッドを呼び出すようにします。 これは、例えば Worksheets(1).Cells(1, 1).Select Selection.Value = 1 と記述していたものを、 Worksheets(1).Cells(1, 1).Value = 1 とする、という事です。

mimimam77
質問者

補足

市販ソフトに なるほど selectは使っていませんでした。 ありがとうございます。