Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
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

With Tabellenblatt liefert "Nothing"

With Tabellenblatt liefert "Nothing"
25.11.2022 05:21:18
Thomas
Hi, ich verzweifel grade etwas....
Ich lasse mir in einer Sub über

'Neues Temporäres Arbeitsblatt erstellen und bennenen für die Druckausgabe
ThisWorkbook.Worksheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
ActiveSheet.Name = "tmpAusgabe"
ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "tblTmpAusgabe"
ein neues Arbeitsblatt in einer Mappe erstellen und möchte dann anschließend über

With tblTmpAusgabe
einstellungen vornehmen, allerdings bekomme ich dann beim Starten der Sub schon
Fehler beim Kompilieren: Variable nicht definiert und der Verweis im Debug genau auf With tblTmpAusgabe.
Wenn ich dann

Dim tblTmpAusgabe As Worksheet
einsetze, dann startet es erstmal, bis es dann zu dem ersten Punkt nach With tblTmpAusgabe kommt, in diesem Fall

.Unprotectet "Test"
dann bekomme ich die Meldung "Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt".
Ich hab es auch schon mit den Tabellennamen versucht, aber das gleiche Problem.
Wenn ich mit der Maus über With tblTmpAusgabe fahre, dann bekomme ich "Nothing" im Tooltip angezeigt.
Was mache ich falsch?
Danke

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: With Tabellenblatt liefert "Nothing"
25.11.2022 07:00:50
ralf_b
du erhälst den Fehler weil das Objekt erst zur Laufzeit diesen Namen erhält. VBA kompiliert aber den Code vorher und findet das Object nicht.
Wozu benötigst du die Nutzung des Codenamen, wenn du ihn eh erst zur Laufzeit erstellst?
Die Objectreferenz hast du schon vorher sicher in der Tasche.
AW: With Tabellenblatt liefert "Nothing"
28.11.2022 04:37:40
Thomas
Hallo Ralf,
ok das hatte ich mir schon irgendwie gedacht, denn wenn ich denn Code einfach in das aufrufende Modul verlege dann klappte es auch.
Den Codename benötige ich nicht unbedingt, da ich diesen aber überall im Code nutze von den einzelnen Tabellenblättern finde ich es einheitlicher diesen auch an der stelle dann zu nutzen.
Anzeige
AW: With Tabellenblatt liefert "Nothing"
25.11.2022 08:24:45
Alwin
Hallo Thomas,
ich würde es so beispielhaft lösen:

Sub test()
ThisWorkbook.Worksheets.Add After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
ActiveSheet.Name = "tmpAusgabe"
ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).Properties("_CodeName") = "tblTmpAusgabe"
test2
End Sub
Sub test2()
With tblTmpAusgabe
.Cells(1, 1) = "test"
.Protect
End With
End Sub
Gruß Uwe
AW: With Tabellenblatt liefert "Nothing"
28.11.2022 04:44:46
Thomas
Hallo Uwe,
ja das wird wohl der weg sein, ich hatte in der zwischenzeit auch mit dem Aufruf aus einer vorgelagerten Sub experimentiert und damit kam der Fehler dann nicht mehr.
MFG
Thomas
Anzeige
AW: With Tabellenblatt liefert "Nothing"
25.11.2022 09:31:45
Rudi
Hallo,
warum nicht einfach so?

Sub aaaa()
Dim tblTmpAusgabe As Worksheet
Set tblTmpAusgabe = Worksheets.Add(after:=Sheets(Sheets.Count))
With tblTmpAusgabe
.Name = "TmpAusgabe"
'mach was
End With
End Sub
Die Festlegung des Codenamens funktioniert ohnehin nur auf Rechnern, auf denen der Zugriff auf das VBA-Projektobjektmodell gestattet ist.
Gruß
Rudi
AW: With Tabellenblatt liefert "Nothing"
28.11.2022 04:47:21
Thomas
Hallo Rudi,
da ich den Codenamen im Gesamten Code immer zum Ansprechen der Tabellen nutze find ich das eigentlich Konsequent das durchgängig zu machen. Wenn ich deine Aussage aber richtig deute würde das auf einem Rechner wo der Zugriff auf das VBA-Projektobjektmodell nicht gestattet ist zu einem Fehler führen? Dann müsste ich da tatsächlich nochmal drüber nachdenken.
MFG Thomas
Anzeige
AW: With Tabellenblatt liefert "Nothing"
01.12.2022 07:12:08
Oberschlumpf
stümmt, Thomas,
da musste noch ma drüber nachdenken, denn...der Zugrif aufs VBA-Projektobjektmodell ist immer erst mal de-aktiviert.
Es mag Ausnahmen geben, weil vielleicht Firma XY denkt "wir brauchen das" und lassen vielleicht per Gruppenrichtlinie den Zugriff aufs Projektobjektmodell immer zu, aber standardmäßig ist bei jeder MSO-Installation diese Option ausgeschaltet - jeder User muss das "per Hand" aktivieren, wenn er das haben will.
Es gilt zu beachten:
das Zulassen des Zugriffs aufs Projektobjektmodell gibt einem "bösen Programmierer" ganz, ganz, ganz freie Hand auf deinen Computer
Daher würd ich eher empfehlen:
arbeite doch lieber mit...

With Sheets("Blattname")
End With
...anstatt mit...

With Blattname
End With
...du hast zwar mit Sheets("") immer wieder genau 10 Zeichen mehr Tipparbeit^^ :-), aber damit hast du auch viel höhere Zugriffssicherheit.
Ciao
Thorsten
Anzeige
AW: With Tabellenblatt liefert "Nothing"
06.12.2022 11:38:39
Thomas
Hi Thorsten,
ok klingt logisch, und hört sich Sicherheitstechnisch auch eher nicht so glücklich an. Dann muss ich an der Stelle von meinem Codenamen abweichen und auf das "Sheets" ausweichen.
Danke für die erklärungen

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige