2009-05-21 5 views
8

ほとんどのSelectSelectionステートメントのようなVBAコードでは、非表示のワークシートやワークブックにはいくつかの制限がありますが、制限は何かのリストを見つけることができません。隠しワークシートまたはブックでは、どのようなExcel VBAアクションが可能ですか?

Google、ヘルプシステムのビルトインドキュメント、およびMSDNのウェブサイトですべてが失敗しました。誰かが私を正しい方向に向けることができますか?

編集: ワークブックが

Set WB_Master = Workbooks.Open(Filename:=PATH_Master, ReadOnly:=False) 

で開かれ、その後、Visual Basic for Applicationsヘルプから

WB_Master.Windows(1).Visible = False 
+0

ブックを開いて見えないようにする方法を詳しく説明できますか? –

答えて

13

に隠されている:

オブジェクトが隠されている場合には、それは画面から削除され、VisibleプロパティはFalseに設定されます。隠されたオブジェクトのコントロールにはユーザーからアクセスできませんが、実行中のアプリケーション、オートメーションを介してアプリケーションと通信している可能性のある他のプロセス、およびWindowsではタイマーコントロールイベントに対してプログラムで使用できます。

私は恐れています。私は恐れがあります.Googleではこれ以上のことは見つけられませんでした。

あなた自身が言ったように、SelectメソッドとSelectionプロパティは隠しワークシートでは機能しませんが、隠れたワークブックでも機能します。 (私が間違っていれば私を訂正してください。)しかし、一般的には、とにかくワークシートの範囲を選択することは必ずしも効率的というわけではありませんが、隠されたワークシートで機能するRangeプロパティを使う方が良いでしょう。

EDIT:

次のコードは、A1の色を変更します:ワークシートが表示されていない場合でも、A8は、シアンする:

Dim book2 As Workbook 
Set book2 = Workbooks.Open("C:\Book2.xls") 

book2.Worksheets("Sheet1").Visible = False 
book2.Windows(1).Visible = False 

With book2.Worksheets("Sheet1").Range("A1:E8").Interior 
    .ColorIndex = 8 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
End With 

book2.Windows(1).Visible = True 
book2.Worksheets("Sheet1").Visible = True 
+2

私は通常、Selectから離れていますが、絶対に必要な場合を除きますが、ここでの特定の問題は、アクティブブックではなく非表示になっているブックに背景色を適用しようとしています。ワークブックを直接参照しているにもかかわらず、ワークブックが表示され、アクティブ化されている場合にのみ機能します。 –

+1

表示されていないブックには、ワークシート機能でアクセスできます。シート名を指定するだけです。パトリックは一番上の例を提供しています。 – jgallant

9

あなたはそれらを非表示解除により、非表示のシート上の任意の制限を回避することができますユーザーがそれを実現することなく、必要なことをしてから、再び隠すことなく、

この例では、Sheet2が非表示になっていることを前提としています。

Sub DoStuffToAHiddenSheetWithoutTheUserKnowingIt() 
    'turns off screen repainting so the user can't see what you're doing 
    'incidentally, this dramatically speeds up processing of your code 
    Application.ScreenUpdating = False 
    'note that if you're stepping through your code, screenupdating will be true anyway 

    'unhide the sheet you want to work with 
    Sheets("sheet2").Visible = True 
     'do whatever you want here, including selecting cells if you want 
     'Scagnelli is right though, only select cells if you have to 

    'when you're finished, hide the sheet again 
    Sheets("sheet2").Visible = False 

    'make sure you turn screenupdating back on, or Excel will be useless 
    Application.ScreenUpdating = True 
End Sub 

あなたのシートを非表示にしたい場合は別の有用なトリックは、彼らは、メニューまたはリボンを介してそれらを再表示しようとした場合、ユーザーにリストされからそれらを防ぐことができますされ、xlVeryHiddenにそれらを設定することです。

関連する問題