Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Variablen Werte zuweisen
26.01.2008 02:09:00
Moni
Hallo!
Ich bin gerade dabei VBA für eine Prüfung zu lernen und verstehe folgendes nicht:
1.)
Wann benutzt man: Set Variable = ....
und wann kann man "Set" weglassen?
Folgendes Beispiel zur Veranschaulichung:
Dim NewWB As Workbook
Set NewWB = Workbooks.Add
'ein neues Workbook wird geöffnet und Referenz dazu in NewWb gespeichert

ABER:
Dim FileName As String
FileName = Application.GetOpenFilename("Excel Dateien *.xls, *.xls")
Workbooks.Open(Filename)

2.)
Ist die Dim-Anweisung nur für die Prozedur, in der man die jeweilige Variable deklariert , gültig oder für das gesamte Modul, oder etwa für alle Module? (Unterschied zu Public bzw. Private?)
Was bedeutet in diesem Zusammenhang:
Option Explicit
Dim NewWb As Workbook

Danke schon mal für eure Hilfe!

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen Werte zuweisen
26.01.2008 09:14:00
Hajo_Zi
Hallo Moni,
zu 2 die Variable ist mit Dim Definiert und so wie es aussieht innerhalb des Makro. Damit gilt die Variable nur in diesem Makro, nicht Modulweit und auch nicht Projektweit. Bei Modulweit hätte Sie zu Beginn des Modul nicht in einem Makro definiert werden müssen. Für Ürojektweit hätte Sie an gleicher Stelle mit Public definiert werden müssen. Nur noch ein Hinweis alle mit set definierten Variablen sollten auch mit set wieder auf Nothing gesetzt werden.
OPtion Explicit ist ein einzelner Befehl und sollte in jedem Modul verwendet werden. Er bedeutet das jede Variable vor der esten verwendung Definiert sein muss. Ist ein Klasse Befehl, bei schreibfehler bei Variablen läuft das Makro nicht.
zu 1 bei 1 erstellst Du eine neue Arbeitsmappe und schreibst das Objek auf eine Variable und kannst mit dieser Variablen alle Eigenschaften bearbeiten
bei 2 öffnest Du eine Arbeitsmappe, in der Variablen hast Du aer den kopmpletten Namen der Arbeitsmappe einschl. Pfad. Falls Du weitere Dateien öffnest oder neu mach mußt du aus dieser Variablen den Dateinamen abtrennen um die Arbeitsmappe anzusprechen.

Anzeige
AW: Variablen Werte zuweisen
27.01.2008 10:55:48
Moni
Hi!
Zu 1.)
Aber wann kann ich SET weglassen und wann nicht? Ich hab beim ersten Beispiel das SET weggelassen und dann ging es nicht.
Andererseits funktioniert es nicht, wenn ich im 2. Beispiel ein Set hinzufüge.
Das verwirrt mich. Ich kann also SET NewWB = Workbooks.Add schreiben,
aber nicht SET Filename = Application.GetOpenFilename... ?!

AW: Variablen Werte zuweisen
27.01.2008 11:03:00
Hajo_Zi
Hallo Moni,
soweit ich Dein Beitrag noch in Erinnerung habe hast Du bei 1 mit Set das Objekt auf die Variable geschrieben und im zweiten Fall nicht mit Set gearbeitet sondern nur die Datei geöffnet.
Jetzt schreibst Du das Du im zweiten Fall auch mit Set arbeiten möchtest, das geht, wenn Du als Variable keinen VBA Befehl oder Eigenschaft benutzt.
Ich habe das jetzt nicht nachgebaut.
Gruß Hajo

Anzeige
AW: Variablen Werte zuweisen
27.01.2008 16:28:04
Holger
Hallo Moni,
vielleicht ist das klarer:
Mit Set werden Objekt-Variablen festlegt (genauer genommen: einer Variablen, die als Object deklariert wurde, ein Verweis auf von der Anwendung erzeugte Objekt zugewiesen) . Dagegen werden fast alle anderen Variablen mit Let oder ohne einen besonderen Befehl festgelegt.
Workbook ist eine Objekt. Workbooks eine Objekt-Auflistung und selbst ein Objekt. Ein Objekt hat Eigenschaften und es können Methoden angewendet werden. Diese werden durch ein Punkt vom Objekt getrennt. Add ist eine Methode des Workbooks-Objektes. Mit Workbooks.Add erzeugst du eine neues Workbook und fügst ein neues Objekt der Workbooks-Auflistung zu. Achte auf den Plural! :.
Filename ist "nur" eine String-Variable. Sie enthält nur einen Wert, hat aber keine sonstigen Eigenschaften. Es ist nichts anderes als a=1, nur dass du bei FileName = Application.GetOpenFilename("Excel Dateien *.xls, *.xls") auf das Objekt "Application" die Methode "GetOpenFileName" anwendest, die wiederum Variablen hat, die bei der Methode festlegen, was sie genau tun soll, und denen beim Aufruf Werte zugewiesen werden können, teilweise auch müssen. (Anmerkung: Objekte der höchsten Stufen in der Objekthierachie wie Application, ActiveWindow, ActiveSheet, ActiveCell, ActiveDocument,... brauchen nicht explizit deklariert zu werden. Wenn man es tut, kann sogar ein fehler auftreten.)
Nehmen wir ein einfacheres Objekt, z.B. ein Steuerelement auf einer UserForm. Dieses ist ein fertiger Code, der durch Zuweisung bestimmter Eigenschaften (s.a. das Eigenschaftsfenster des VBA-Bildschirmes) den Bedürfnissen des Anwenders angepasst werden kann, z.B.:
Höhe des Label1 festlegen: Label1.Height=20
Höhe des Label1 bestimmen und in die Variable Höhe schreiben: Höhe=Label1.Height
Ich hoffe, dir geholfen zu haben. viel Erfolg bei der Prüfung
Holger
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige