Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Inhaltsverzeichnis

Objektverweis außerhalb Prozedur

Objektverweis außerhalb Prozedur
Daniel
Hallo zusammen,
ich verweise mit Set workbook=Workbooks(..) auf meine Excel-Datei.
Ist es möglich, die Objektverweise außerhalb einer Prozedur / Funktion zu definieren? Oder muss ich in jeder Prozedur die ganzen Objektverweise (Workbook,Worksheet, usw.) einzeln definieren?
Viele Grüße
Daniel
AW: Objektverweis außerhalb Prozedur
04.03.2010 12:31:14
Rudi
Hallo,
du kannst die Objektvariablen als Public deklarieren und dann 1x zuweisen.
Gruß
Rudi
AW: Objektverweis außerhalb Prozedur
04.03.2010 12:42:18
Henrik
Hallo Daniel,
z.B. in ein Modul folgendes schreiben:

Public Const WBName = "Mappe1.xls"
Public Const WSName = "Tabelle1"
Dann kannst du in allen anderen Modulen die Begriffe WBName und WSName verwenden.
Henrik
AW: Objektverweis außerhalb Prozedur
04.03.2010 12:44:25
Hajo_Zi
Hallo Henrik,
das ist falsch. Das sind String und Daniel wolle die Arbeitsmappe auf dem Objekt haben.

AW: Objektverweis außerhalb Prozedur
04.03.2010 13:23:12
Daniel
Danke für eure Antworten!
Muss Hajo recht geben. Ich will keine String als public deklarieren, sondern die Arbeitsmappe public zuweisen. In der Art: Public Set Workbook=Workbooks(""). Ziel ist die Arbeitsmappe einmal pro Modul zuzuweisen.
Geht das? Wenn ja, wie?
Vielen Dank!
Grüße
Daniel
Anzeige
das geht nicht.
04.03.2010 13:40:32
Rudi
Hallo,
ein Objekt quasi als Konstante zu definieren ist nicht möglich.
Gruß
Rudi
Du kannst nur eine Objektvariable global...
04.03.2010 13:48:00
Luc:-?
…deklarieren (hier mit Public) und sie dann bspw in Ereignisprozeduren verwenden, Daniel.
Bei Worksheet_Activate könntest du dann die nötigen Set-Befehle für das jeweilige Arbeitsblatt unterbringen.
Gruß Luc :-?
Ich würde nicht auf 'As String' verzichten! orT
04.03.2010 13:49:46
Luc:-?
Gruß Luc :-?
noch was
04.03.2010 14:09:44
Rudi
Hallo,
wenn sich die Worksheets alle in der Mappe mit dem Code befinden, bietet sich an, einfach mit deren CodeName zu arbeiten. Dann brauchst du die nicht zu Seten.
Gruß
Rudi
...Dabei wäre es allerdings angebracht,...
04.03.2010 14:20:13
Luc:-?
…Rudi,
denen auch einen prägnanten solchen zu geben… ;-)
Gruß Luc :-?
Anzeige
... was ich immer mache owT
04.03.2010 14:33:36
Rudi
Das glaub' ich gern! ;-) Gruß owT
04.03.2010 14:35:01
Luc:-?
:-?
AW: ...Dabei wäre es allerdings angebracht,...
04.03.2010 14:35:06
Daniel
Hallo,
Danke für alle Antworten!
Was ist denn mit Codenamen gemeint? Mein Ziel ist an einer Stelle im Modul die Arbeitsmappe, sowie die Arbeitsblätter zuzweisen und hinterher zuverwenden. Könnte jemand ein kleines Beispiel geben, wie das umzusetzen ist?
Vielen Dank und Viele Grüße
Daniel
Der ECHTE NAME des Blattes, nicht sein...
04.03.2010 14:48:18
Luc:-?
…Titel, Daniel,
obwohl die, solange du nichts änderst standardmäßig übereinstimmen. Diesen Namen findest du im VBE-Eigenschaftenfenster des Arbeitsblatts ganz oben neben Name. Da was Prägnantes reinschreiben. Weiter unten das 2.„Name“ ist der Reitertitel. Im Code kannst du dann diesen oberen Namen einfach so verwenden. Setze mal 'n Pkt dahinter, dann merkst du es. Oder mach das Gleiche für die Mappe. Ersetze DieseArbeitsmappe analog und setze dahinter im Code 'n Pkt. Dann wdn dir auch alle Blätternamen angeboten.
Gruß Luc :-?
Anzeige
AW: ...Dabei wäre es allerdings angebracht,...
04.03.2010 14:53:14
Rudi
Hallo,
im VBE unter Micosoft Excel Objekte siehst du bei den Worksheets die CodeNamen und dahinter in Klammern die Namen der Tabellen wie in der Mappe angezeigt Tabelle1 (Daten).
Blende dir das Eigenschaftenfenster ein. Bei (Name) kannst du einen neuen Codenamen eingeben, bspw. für Sheet "Daten" shDaten oder so. Im gesamten Projekt kannst du einfach ohne weitere Deklaration diesen Namen verwenden.
z.B. shDaten.Cells.Clear
Das mache ich immer so, wenn sich alles auf die Mappe mit dem Code bezieht.
Gruß
Rudi
AW: ...Dabei wäre es allerdings angebracht,...
04.03.2010 15:10:46
Daniel
Jetzt hab ichs verstanden!
Vielen Dank euch!
Lieben Gruß
Anzeige
AW: ...Dabei wäre es allerdings angebracht,...
05.03.2010 14:44:23
Daniel
Danke nocheinmal! Hat wunderbar geklappt mit dem Codename!! Könnte mir noch jemand sagen, wie ich den Codename in eine Variable packen kann?
Grüße
Dani
Verstanden?, oder etwa doch nicht ?
05.03.2010 14:49:05
Renee
Hi Dani,
wie ich den Codename in eine Variable packen kann
Das geht nicht, falls du sowas, wie eine Indirekte Adressierung suchst!
Der Codename ist eine direkte Referenzierung des Objekts.
Also was willst du? Irgendwie kommt mir die Sache die da zusammenschustern willst spanisch vor!
GreetZ Renée
AW: Verstanden?, oder etwa doch nicht ?
05.03.2010 15:47:22
Dani
Dann möchte ich einmal versuchen das Spanisch zu übersetzen Renee :-)
Mit den Codenames weiße ich die Arbeitsblätter zu:
With codename_xy
....
End with
Nun möchte ich eine Funktion in mehreren Arbeitsblättern verwenden. Meine Idee ist gewesen, die Zuordnung des Codenames über eine Variable mitzugeben.
Function beispiel(codename_xy)
With codenamevariable  'codenamevariable soll den mehrere Werte, z.B. codename_xy annehmen!
End with
End 

Function
Ist meine Idee nachzuvollziehen? Wie könnte ich es anders (besser) machen?
Dank und Grüße

Anzeige
Da verstehst du was grundfalsch...
05.03.2010 16:08:39
Renee
...Dani,
Sorry, aber vielleicht beginnst du mit dem Verständnis für die Adressierung/Referenzierung von Objekte besser von vorn. Bei VBA gut versteh ich diese Fragen nicht!
Warum übergibst du dann nicht die Variablen namen, also z.B. Worksheets(2).Name an die Function ?
oder du übergibst das Objekt oder die Referenz darauf als solches oder den Index der Collection oder..., aber nicht den Codenamen als Variable!!!
GreetZ Renée
AW: Da verstehst du was grundfalsch...
05.03.2010 16:32:44
Dani
Hi Renee,
Hab nun das ganze Objekt übergeben. Das Problem bei Worksheets(..).name ist doch dass ich die Worksheets in der Reihenfolge nicht verschieben darf oder sehe ich das falsch?
Danke und Grüße
Anzeige
Genauso! Dem ist nichts hinzuzufügen! orT
05.03.2010 16:35:48
Luc:-?
Gruß+schöWE, Luc :-?
wohl nicht ganz verstanden
05.03.2010 19:40:29
Rudi
Hallo,
du kannst das Worksheet einfach als Objekt an deine Function übergeben.
Function MeineFunktion(wks as Worksheet)
MeineFunktion=wks.Range("A1")
End Function
Sub TT()
Msgbox MeineFunktion(shDaten)
End Sub

oder wenn es sich um eine Ereignisprozedur in einem Worksheet handelt z.B.
Private Sub Worksheet_Activate()
MsgBox MeineFunktion(Me)
End Sub

Gruß
Rudi

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige