Microsoft Excel

Herbers Excel/VBA-Archiv

INDIREKT nicht praktikabel, andere Lösung ?

Betrifft: INDIREKT nicht praktikabel, andere Lösung ? von: Markus
Geschrieben am: 05.11.2014 16:13:31

Heute morgen wurde mir bereits geholfen.

Problem ist Folgendes ...

ich möchte in einer Mappe2 auf eine Zelle aus einer Tabelle"XX" aus Mappe1 verweisen.
Die Tabelle"XX" ist aber unter Umständen nicht vorhanden.
Bei normalem Verweis erscheint dann ja immer #Bezug

um das zu vermeiden, möchte ich vorher prüfen ob es diese Tabelle"XX" gibt.
Der Name der Tabelle"XX" würde in einer Zelle z.B. A4("Ba")in der aktuellen Tabelle der Mappe2 stehen.

Aufgabe also. Prüfe (in Mappe2) ob es eine Tabelle(mit Namen der in A4 steht) in Mappe1 gibt, wenn ja gibt Wahr aus, wenn nein gibt Nein aus.

INDIREKT Lösung sieht so aus
=WENNFEHLER(INDIREKT("[Sep.xlsm]" & A4&"!$BE$52");0)

Nun sieht man schon am Tabellennamen, es geht um Monate. Wenn ich das durchziehe, habe ich zum Schluss 12 Arbeitsmappen offen, die alle aufeinander angewiesen sind. Das ist nicht wirklich parktikabel.

Kann ich diese Funktion auch in VBA realisieren ?

  

Betrifft: Nur mit MappenÖffnung (im Hintergrd)! Gruß owT von: Luc:-?
Geschrieben am: 05.11.2014 16:24:31

:-?


  

Betrifft: AW: Nur mit MappenÖffnung (im Hintergrd)! Gruß owT von: Markus
Geschrieben am: 05.11.2014 16:35:47

Ja das habe ich ja geschrieben, dass die INDIREKT Funktion geht, aber eben nur mit offener Mappe, das ist mein Problem ... im Hintergrunde öffnen ist auch blöd, wäre aber nich eine Überlegung wert.

Kann ich nicht anders (VBA) prüfen, ob es Tabelle mit dem Namen der in A1 steht existiert und den Wert dann übernehmen, oder wenn es diese Tabelle in der anderen Mappe nicht gibt, das ganze auf 0 setzen.


  

Betrifft: Meine AW bezog sich auf VBA, wobei 'im HG' ... von: Luc:-?
Geschrieben am: 05.11.2014 18:20:09

…heißt, dass die Mappen unsichtbar im Hintergrund geöffnet wdn (müssen), Markus,
im VBEditor kann man sie aber sehen. Sie müssen dann also auch wieder geschlossen wdn. Mit einem normalen xlFernBezug sieht man im VBE nichts.
INDIREKT kann auch dann erfolgreich benutzt wdn, wenn im VBE unter Extras - Verweise Verweise auf die QuellDateien gesetzt wdn. Diese Verweise wdn aber nur dann vom VBE akzeptiert, wenn diese Mappen eindeutige eigene VBA-Projekt-Namen haben und nicht standardmäßig alle VBAProject heißen! Diese Bezeichnung muss im VBE entsprd geändert wdn.
Da diese Verweise dann für Xl generell gelten, sollten sie bei Öffnen der Mappe, die sie benötigt, in der EreignisProzedur Workbook_Open gesetzt und bei ihrem Schließen (Workbook_BeforeClose) wieder entfernt wdn. Man sollte das aber auch über ein Xl/Vb-AddIn, das diese Verweise permanent enthält, realisieren können, so dass nur auf dieses verwiesen wdn muss.
INDIREKT fktioniert dann deshalb, weil die Dateien, auf die verwiesen wird, unsichtbar im Hintergrund geöffnet wurden, wie ein Blick auf den Verzeichnisbaum des VBE belegt.
Gruß, Luc :-?


  

Betrifft: AW: Meine AW bezog sich auf VBA, wobei 'im HG' ... von: Markus
Geschrieben am: 06.11.2014 14:35:11

ich verstehe zwar so grundsätzlich was das alles bedeutet, da ich aber nicht die extrem große Erfahrung mit Programmierung habe, befürchte ich, dass ich keine Ahnung habe, wie ich das realisieren soll.

Im Moment habe ich eine Lösung, dass ich mit (Workbook_Open) die entsprechende Datei öffnen und mit

Application.ShowWindowsInTaskbar = False
die Dateien quasi im Hintergrund öffne ... zumindest werden die einzelnen Fenster nicht in der Taskleiste angezeigt.

mit (Workbook_BeforeClose) und
Application.ShowWindowsInTaskbar = True
beendet ich das ganze dann wieder beim Schließen.

Die Mappen haben alle einen eindeutigen VBA-Projekt-Namen ...

Problem daran ist, dass beim Schließen einer Mappe, die anderen im Hintergrund nicht geschlossen werden. Ich habe versucht, das ebenfalls in (Workbook_BeforeClose) zu realisieren, aber entweder schließt er nicht alle hintereinander, sondern immer nur eine, oder Excel schmiert mir ab.

Am liebsten wäre mir halt eine Lösung, in der ich Prüfe, ob in einer Mappe eine bestimmte Tabelle vorhanden ist, wenn ja sollen die Daten übernommen/kopiert werden, wenn nein soll der Wert auf Null gesetzt werden. Aber das scheint dann noch schwieriger ...


  

Betrifft: AW: Meine AW bezog sich auf VBA, wobei 'im HG' ... von: Markus
Geschrieben am: 06.11.2014 14:36:27

Sorry für Doppelpost, aber ich hatte wieder das Häkchen vergessen

ich verstehe zwar so grundsätzlich was das alles bedeutet, da ich aber nicht die extrem große Erfahrung mit Programmierung habe, befürchte ich, dass ich keine Ahnung habe, wie ich das realisieren soll.

Im Moment habe ich eine Lösung, dass ich mit (Workbook_Open) die entsprechende Datei öffnen und mit

Application.ShowWindowsInTaskbar = False
die Dateien quasi im Hintergrund öffne ... zumindest werden die einzelnen Fenster nicht in der Taskleiste angezeigt.

mit (Workbook_BeforeClose) und
Application.ShowWindowsInTaskbar = True
beendet ich das ganze dann wieder beim Schließen.

Die Mappen haben alle einen eindeutigen VBA-Projekt-Namen ...

Problem daran ist, dass beim Schließen einer Mappe, die anderen im Hintergrund nicht geschlossen werden. Ich habe versucht, das ebenfalls in (Workbook_BeforeClose) zu realisieren, aber entweder schließt er nicht alle hintereinander, sondern immer nur eine, oder Excel schmiert mir ab.

Am liebsten wäre mir halt eine Lösung, in der ich Prüfe, ob in einer Mappe eine bestimmte Tabelle vorhanden ist, wenn ja sollen die Daten übernommen/kopiert werden, wenn nein soll der Wert auf Null gesetzt werden. Aber das scheint dann noch schwieriger ...


 

Beiträge aus den Excel-Beispielen zum Thema "INDIREKT nicht praktikabel, andere Lösung ?"