2009-05-21 3 views
8

Hidden Worksheets/Arbeitsmappen haben einige Einschränkungen, was in VBA-Code getan werden kann, wie die meisten Select und Selection Anweisungen, und alles, was aus ActiveSheet kommt, aber ich kann keine Liste der Einschränkungen finden.Welche Excel VBA-Aktionen sind auf versteckten Arbeitsblättern oder Arbeitsmappen möglich?

Google, die integrierte Dokumentation im Hilfesystem und MSDN-Website haben mich alle fehlgeschlagen. Kann mir jemand in die richtige Richtung zeigen?

Edit: Die Arbeitsmappe wird geöffnet mit

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

und dann versteckt mit

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

Können Sie näher erläutern, wie Sie die Arbeitsmappe öffnen und unsichtbar machen? –

Antwort

13

Von der Visual Basic für Applikationen-Hilfe:

Wenn ein Objekt versteckt ist, Es wird vom Bildschirm entfernt und seine Visible-Eigenschaft wird auf False festgelegt. Die Steuerelemente eines ausgeblendeten Objekts sind für den Benutzer nicht zugänglich, aber sie sind programmgesteuert für die laufende Anwendung, für andere Prozesse, die möglicherweise über Automatisierung mit der Anwendung kommunizieren, und für Windows, um Timer-Ereignisse zu steuern.

Nicht viel Hilfe, ich habe Angst, und ich konnte nicht viel mehr durch Google finden.

Wie Sie selbst gesagt haben, funktionieren die Select-Methode und die Selection-Eigenschaft nicht auf einem ausgeblendeten Arbeitsblatt, sie sollten jedoch auf einer ausgeblendeten Arbeitsmappe funktionieren. (Bitte korrigieren Sie mich, wenn ich falsch liege.) Im Allgemeinen ist es jedoch nicht immer so effizient, Bereiche in Arbeitsblättern auszuwählen. Sie arbeiten besser mit der Range-Eigenschaft (die auf einem ausgeblendeten Arbeitsblatt funktioniert).

EDIT:

Der folgende Code wird die Farbe A1 ändern: A8 auch auf Cyan, wenn das Arbeitsblatt nicht sichtbar ist:

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

Ich bleibe normalerweise weg von Select, außer wenn absolut notwendig, aber mein spezifisches Problem hier versucht, eine Hintergrundfarbe auf Zellen anzuwenden, die sich auf einer Arbeitsmappe befinden, die sowohl ausgeblendet als auch nicht die aktive Arbeitsmappe ist. Obwohl direkt auf die Arbeitsmappe verwiesen wird, funktioniert sie nur, wenn die Arbeitsmappe sichtbar und aktiviert ist. –

+1

Eine Arbeitsmappe, die nicht sichtbar ist, kann mit der Funktion Arbeitsblatt zugegriffen werden. Geben Sie einfach den Blattnamen an. Patrick hat ein Beispiel angeführt. – jgallant

9

Sie können sie um irgendwelche Beschränkungen auf versteckte Blätter bekommen Einblenden ohne dass der Benutzer es merkt, tut, was immer Sie brauchen und dann wieder verstecken.

In diesem Beispiel wird davon ausgegangen, dass Sheet2 ausgeblendet ist.

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 

Ein weiterer nützlicher Trick, wenn Sie Ihre Blätter versteckt wollen, ist, sie zu XlVeryHidden setzen, die sie vor einem aufgelistet an den Benutzer zu verhindern, wenn sie versuchen, sie durch das Menü oder das Band sichtbar machen.

Verwandte Themen