VBA Excel Schlüsselwort 'set' Erklärung

Hallo liebe Gemeinde

Eine Prozedur beginnt mit:

Set Bereich = Sheets(„Tabelle14“)

Wofür steht dieses „Set“ ? Wozu braucht man das?

Die VBA Hilfe ist wie immer nicht aufschlussreich.

Gruß und Dank vom VBA Greenhorn.

Hi christian,

Eine Prozedur beginnt mit:
Set Bereich = Sheets(„Tabelle14“)

warum das?

With Worksheets(„Tabelle14“)

wäre m.E. besser, aber ich weiß ja nicht um was es geht.

Wofür steht dieses „Set“ ? Wozu braucht man das?

Wenn du sagst

x=Range(„A1“).Value

so hat x den Wert der Zelle A1

Sagst du

Set x=Range(„A1“)

so ist x die Zelle

Ich kenne mich mit den genauen Berifflichkeiten in Vb(a) nicht so aus, und weiß nicht genau wie man das ausdrückt.
Icch sags so, mit Set sagst du einer Variablen daß sie jetzt ein Objekt ist.
Und ein Objekt hat Eigenschaften, Methoden.

Beispiel:

Sub tt()
Dim wks As Worksheet
Set wks = Worksheets(„Tabelle1“)
MsgBox wks.UsedRange.Address
End Sub

Damit ist wks durch das Set ein Objekt, mit dem du allerhand machn kannst. Wie hier den benutzten Zellenbereich herausfinden u.v.m.

PS: Set Bereich = Sheets(„Tabelle14“) ist m.E. Blödsinn, eine Tabelle ist nicht automatisch ein Bereich, zeige mal den Code und sage um was es da geht.

Gruß
Reinhard

Servus Reinhard
Diese Prozedur stammt aus VBA mit Excel von Bernd Held.
Überschrift: Einen Bereich summieren. Dies ist der Link:
http://books.google.at/books?id=tgx59-L9gdMC&pg=PA11…

Dies ist die Prozedur :

Sub Summe_bilden()
Dim Bereich As Range 'Range steht für auswählen und zwischenspeichern. set muss bei Objektzuweisung voranstehen.

Set Bereich = Sheets(„Tabelle13“).Columns(2)

MsgBox "Die Summe aller Beträge ergibt: " & _
Application.WorksheetFunction.Sum(Bereich), vbInformation

End Sub

Nun Frage ich mich weshalb dieses „Set“ voransteht.
Gruß und Dank Christian

Hallo Christian

Diese Prozedur stammt aus VBA mit Excel von Bernd Held.

aargs, mein Tipp ist, entsorge es so daß es keiner mehr liest.

Sub Summe_bilden()
Dim Bereich As Range
Set Bereich = Sheets(„Tabelle13“).Columns(2)
MsgBox "Die Summe aller Beträge ergibt: " & _
Application.WorksheetFunction.Sum(Bereich), vbInformation
End Sub
Nun Frage ich mich weshalb dieses „Set“ voransteht.

Schlawiner, du fragst an wegen
Set Bereich = Sheets(„Tabelle13“)
jetzt kommt daß du
Set Bereich = Sheets(„Tabelle13“).Columns(2)
gemeint hast, da sind Welten dazwischen.

Durch das Set entspricht Bereich der Spalte B.
D.h. alles was du mit „Bereich“ machst spiegelt sich in Spalte B wieder.

Bereich.Clear o.ä.

Gruß
Reinhard

Hallo Christian,

mal abgesehen von deinen Source, eine kleine Erklärung.
Daten werden ueber eine Variable zugewiesen oder abgefragt.

Eine Zuweisung schaut wiefolgt aus.

Deine Variable = Deine Wert

Möchtest du jedoch einen Wert abfragen, machst du das wie folgt.

If Deine Variable = Deine Wert then …

Es gibt aber 2 Typen von Variablen. Einmal die Primitiven Datentypen. Sie werden direkt auf dem Stack abgelegt. Dann gibt es noch die Objecte, diese werden im Heap abgelegt. Aber um auf sie zuzugreifen, musst du eine Referenz anlegen, die im Stack liegt. Das heisst im Stack liegt nur ein Wert ( die Adresse vom Heap) wo sich das Object befindet!

Eine Referenz legst du via Set an! Vorher musst du aber noch sagen um was es sich handelt ( Was für ein Object) Das machst du ueber eine normale Declaration.

Dim DeineVariable = DeinObject
SET DeineVariable = DeinObject

Kurz und knapp gesagt und zum merken.Willst du einen Object einen Wert zuweisen, so musst du das via SET machen, wobei bei primitiven Datentypen , du KEIN SET verwenden darfst.

Primitive Datentypen sind zum Bsp. Long, Integer, String, Byte etc.
Referenzen sind Objecte, sprich Elemente die Eigenschaften haben, Ereignisse auslösen koennen und Methoden besitzen :wink:

Bei einem Object wiederum erfolgt aber die Abfrage oder die Zuweisung etwas anders. Das machst du dann mittels.

Referenz.Eigenschaft = DeinWert 'Zuweisung
if Referenz.Eigenschaft=DeineWert then 'Abfrage
Referenz.Methode ’ Methode aufrufen

MfG Alex