Geschachtelte With-Anweisung hiearchy

Ich habe über diese ein paar mal vor kurzem und war nur neugierig, ob es einen einfacheren Weg, dies zu tun...

With Activeworkbook
  'Do Stuff
  With .Sheets(1)
    'More stuff Done
    '...
    'But now I need to refer to or pass the Sheet in the last With Statement
    SomeFunctionAnswer = SomeFunction Activeworkbook.Sheets(1)
  End With
  'Yet more stuff Done
End With

Muss es vollständig geschrieben, oder gibt es eine Möglichkeit der Notation macht es einfacher/sauberer? Vielleicht gibt es eine Art von Eigenschaft oder Methode übergeben sich nur für diese Instanz? Was ist die Bezugnahme auf eine Eigenschaft oder Methode aus der höheren Mit?

SomeFunctionAnswer =  SomeFunction .Self  '???
'OR
SomeFunctionAnswer =  SomeFunction .Parent.Name  '???

Hoffe das macht Sinn...

  • Wenn ich meine eigenen Klassen habe ich oft über eine einfache Public Property Get Self() As [WhateverTheClassIs] und machen es Set Self = Me spezifisch, so dass ich es verwenden können, in Aussagen wie With New SomeClass und Implementierung einer factory-Methode auf die default-Instanz (erfordert das Bearbeiten der exportierten module mit einer VB_PredeclaredId = True Modul Attribut, dann re-importieren Sie diese wieder in das Projekt). Aber für den built-in Klassen, ist es "Nein". =)
  • Mug: Hey! Du nur mich gelehrt VB_PredeclaredId = True , danke, das ist ein Juwel. Ich kann jetzt laufen Klassen über das Direktfenster, wow.
  • Sie sind herzlich willkommen! Ich habe dieses leere StaticClass.cls Klasse Modul, das in meine Dokumente mit diesem Attribut festgelegt True also immer wenn ich eine "statische Klasse" ich habe einfach das import Modul =) ...es ist ein zweischneidiges Schwert, obwohl; eine UserForm Klasse hat das Attribut auf True wie gut das ist, wie Sie ein Formular anzeigen, ohne die Instanziierung eines... das ist nicht best practice); die Objekte sind gedacht, um instanziiert zu werden! Ich in der Regel halten diese für factory-Methoden.
InformationsquelleAutor Rdster | 2017-01-23
Schreibe einen Kommentar