Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variablen- Objekt Variablen?

Variablen- Objekt Variablen?
Peter
Hallo Excel Tüftler!!
Sorry,das ich jetzt mit einer zweiten Frage im Forum stehe aber es ist ne wichtige Frage. Es geht da um eine Grunddsatzfrage unter ein paar "VBA-Embryos".
Wo liegt der Unterschied zwischen Variablen und Objekt-variablen?
Verhaltet euch euer lachen über unsere Unwissenheit und helft uns bitte.
Schöne Grüße
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Variablen- Objekt Variablen?
NE
Hi Peter,
hm also 'normale' Variablen sind halt Zahlen[int,long,double,date,etc]/Zeichenketten
dim i as string
i = "Hallo Hallo" 'Zuweisung mit i =
Objectvariablen sind halt Objekte ;;-))
dim i as Range/Worksheet/Chart
oder eben
dim i as Object
wobei die Zuweisung immer mit set i=Objekt beginnt, also zB
dim i as Worksheet
set i=activeworkbook.sheets("Tabelle1) 'Zuweisung mit set i =
Naja oder so in etwa ;-)
lg Nancy
Anzeige
AW: Variablen- Objekt Variablen?
Peter
Danke, aber worin liegt der Vorteil des Einsatzes von Objektvariablen
Peter
AW: Variablen- Objekt Variablen?
DieterB
Hallo Peter,
Vorteil?
Kann man so nicht sagen.
Workbooks, Sheets usw sind Objekte innerhalb von excel.
Um bei Aktionen nicht jedes einzeln ansprechen zu müssen, werden Objekt-Variablen
deklariert.
Z.B.: Du hast eine Mappe mit 10 Diagrammen die Du alle löschen möchtest.
Statt Diagramm1 lösche, Diagramm2 lösche usw
schreibst Du eine Objektvariable und verarbeitest diese in einer Schleife (next Variable)
Willst Du werte innerhalb einer Schleife verarbeiten, definierst Du eine variable (Long, int, string usw.)
Werte sind keine Objekte.
Gruß
DieterB
Anzeige
AW: Variablen- Objekt Variablen?
03.05.2004 20:00:31
Nepumuk
Hallo Peter,
eine Variable enthält mit Ausnahme Arrays nur einen Wert. Eine Objektvariable stellt in den meisten Fällen ein Excelobjekt dar. Diese hat dann die selben Eigenschaften und du kannst Methoden darauf anwenden wie auf das Objekt selbst. Die Zuweisung erfolgt entweder über eine Set - Anweisung oder in einer For Each - Next - Schleife. Es gibt spezielle Objekte in VB / VBA die kein entsprechendes Objekt in Excel darstellen. Z.B. das FileSystemObject oder das FileSearch-Objekt. Diese kannst du nur über die entsprechende Objektvariable ansprechen. Eine Objektvariable ohne Verbindung zu einem Objekt hat den Wert Nothing. Objektvariable haben die Eigenschaft, den Speicher, den sie durch die Zuweisung eines Objektes belegen nicht automatisch mit dem beenden einer Sub / Function freizugeben. Dadurch kann es speziell bei rekursiven Prozeduren zu einem Memoryoverflow kommen. Mit: myObjektVariable = Nothing kannst du den belegten Speicher explizit freigeben.
Gruß
Nepumuk
Anzeige
AW: Variablen- Objekt Variablen?
NE
hm,
also Vorteil ist wohl ein falsches Wort in dem Zusammenhang,
je nachdem was erforderlich ist, sollte deklariert werden und möglichst genau wenn geht
Du kannst also nicht i as long deklarieren und dann i ein Objekt verpassen ;-)
Mal ne kleine Spielerei, zB

Sub xxx()
'Dim bereich As Object, cell As Object 'das geht auch, aber imho Unfug
Dim bereich As Range, cell As Range
Dim i As Integer
Set bereich = Sheets(1).Range("A1:C10")
For Each cell In bereich
i = i + 1
cell.Interior.ColorIndex = i
Next
End Sub

ein 'richtiges Object' brauchst Du bei sowas, also um zB ein Programm zu starten:

Sub zzz()
Dim o As Object
Set o = CreateObject("InternetExplorer.application")
o.Visible = True
o.Width = 200
o.Height = 200
o.resizable = False
End Sub

Anders bzw. besser kann ichs echt nicht erklären ;-(
lg Nancy
Anzeige
refresh - smile, Danke :-)
NE
also ich grübel und grübel eh ich mal was tipps ...,
aber da hast ja nun echt supi Antworten ::-))
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Variablen und Objektvariablen in Excel VBA


Schritt-für-Schritt-Anleitung

  1. Variablen deklarieren: Um eine Variable in VBA zu erstellen, verwendest du die Dim Anweisung. Zum Beispiel:

    Dim i As Integer
  2. Objektvariablen deklarieren: Für die Erstellung von Objektvariablen nutzt du ebenfalls Dim, aber mit dem entsprechenden Objekttyp:

    Dim ws As Worksheet
  3. Zuweisung von Objekten: Um deiner Objektvariable einen Wert zuzuweisen, verwendest du die Set Anweisung:

    Set ws = ThisWorkbook.Sheets("Tabelle1")
  4. Arbeiten mit Objekten: Du kannst dann Methoden und Eigenschaften der Objekte nutzen, die du über deine Objektvariablen referenzierst.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"
    Dies passiert, wenn du versuchst, auf eine Objektvariable zuzugreifen, die nicht gesetzt wurde. Stelle sicher, dass du Set verwendest, bevor du die Variable nutzt.

  • Typkonflikt: Wenn du eine Variable als Long deklarierst und versuchst, ihr ein Objekt zuzuweisen, erhältst du einen Typkonflikt. Achte darauf, die richtige Typisierung zu verwenden:

    Dim i As Long
    ' Falsch: Set i = SomeObject

Alternative Methoden

  1. For Each Schleifen: Um mit Sammlungen von Objekten zu arbeiten, kannst du For Each nutzen:

    Dim cell As Range
    For Each cell In ThisWorkbook.Sheets("Tabelle1").Range("A1:A10")
       cell.Value = "Test"
    Next cell
  2. CreateObject Funktion: Um neue Objekte zu erstellen, wie zum Beispiel eine Internet Explorer Instanz:

    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")

Praktische Beispiele

  • Beispiel für das Löschen mehrerer Diagramme:

    Dim chartObj As ChartObject
    For Each chartObj In ActiveSheet.ChartObjects
       chartObj.Delete
    Next chartObj
  • Farben von Zellen ändern:

    Dim bereich As Range
    Dim cell As Range
    Dim i As Integer
    Set bereich = Sheets(1).Range("A1:C10")
    For Each cell In bereich
       i = i + 1
       cell.Interior.ColorIndex = i
    Next cell

Tipps für Profis

  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler durch Tippfehler zu vermeiden.

  • Achte darauf, dass Objektvariablen den Speicher nicht automatisch freigeben. Setze sie auf Nothing, wenn sie nicht mehr benötigt werden:

    Set ws = Nothing
  • Nutze immer den spezifischen Typ einer Objektvariable, um die Lesbarkeit und Wartbarkeit deines Codes zu erhöhen.


FAQ: Häufige Fragen

1. Was ist eine Objektvariable?
Eine Objektvariable ist eine Variable, die auf ein Objekt verweist, wie z.B. auf ein Arbeitsblatt oder eine Zelle in Excel.

2. Wie deklariere ich eine Objektvariable in VBA?
Du deklarierst eine Objektvariable mit der Dim Anweisung gefolgt vom Objekttyp. Zum Beispiel:

Dim ws As Worksheet

3. Was ist der Unterschied zwischen einer Sub und einer Function in VBA?
Eine Sub führt eine Aktion aus, gibt jedoch keinen Wert zurück, während eine Function einen Wert zurückgibt.

4. Warum sollte ich Objektvariablen verwenden?
Objektvariablen ermöglichen eine effizientere und leserlichere Programmierung, da du nicht jedes Mal das Objekt direkt ansprechen musst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige