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

Probleme beim abspielen von Makros

Probleme beim abspielen von Makros
15.05.2013 08:27:27
Makros
Hallo und guten Morgen zusammen
ich arbeite gerade an einer umfangreichen Kalkulation mit verschiedenen, untereinander verknüpften Dateien.
In der einen Datei erfasse ich Rezepte in je einem separaten Register.
Die Register-Namen schicke ich auf eine Übersichtsdatei.
Hier die Formel, die mir die Register-Namen in der Tabelle erscheinen lässt:
=WENN(ZEILE(A5)>ANZAHL2(x);"";HYPERLINK("#'"&INDEX(x;ZEILE(A5))&"'!A1";TEIL(INDEX(x;ZEILE(A5)); FINDEN("]";INDEX(x;ZEILE(A5)))+1;31))) ~f~
Die "x" ist in der Tabelle folgendermassen definiert:
~f~=ARBEITSMAPPE.ZUORDNEN(1+0*JETZT())
Nun das eigentliche Problem: Wenn ich in einer anderen Datei, nennen wir sie Hauptdatei, ein einfaches, aufgezeichnetes Makro laufen lasse (welches nur die Zahlen in der einen Spalte kopiert und dann die Werte in die nächste Spalte einfügt), "arbeitet" es in meiner Übersichtstabelle ebenfalls. Die Bezeichnungen der Register der Rezept-Tabelle verschwinden, stattdessen erscheinen die Register-Namen der Hauptdatei. Die Hyperlinks zu den Rezept-Registern sind noch da, die Bezeichnungen nicht.
Frage: Muss ich "x" allenfalls umdefinieren oder wie komme ich aus diesem Schlamassel raus?
Ich freue mich auf Tipps und Tricks und danke euch schon mal im Voraus
Mit freundlichem Gruss
Dani

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

Betreff
Datum
Anwender
Anzeige
AW: Probleme beim abspielen von Makros
15.05.2013 08:31:11
Makros
Hi Dani,
durch das "0*JETZT()" machst du die Namens-Funktion volatil. Es wäre einen Versuch Wert, das einfach mal zu streichen. Dann sollte sich der Register-Name nur noch ändern, wenn du die Zelle anfässt (F2+Enter).
Grüße,
Klaus M.vdT.

P.S.: Hallo Hansueli!

AW: Probleme beim abspielen von Makros
15.05.2013 09:08:17
Makros
Hallo Klaus
Es funktioniert!
ARBEITSMAPPE.ZUORDNEN(1)
Herzlichen Dank für deinen Input.
Viele Grüsse
Dani

Danke für die RÜ! Mit Text!
15.05.2013 09:18:23
Klaus
Hallo Dani,
mach dich aber noch damit vertraut, wann / wann nicht die Formel jetzt neu berechnet wird. Das JETZT() stand da ja ursprünglich nicht ohne Grund drin.
Grüße,
Klaus M.vdT.

Anzeige
AW: Danke für die RÜ! Mit Text!
15.05.2013 09:41:51
dani
Hallo Klaus
Noch eine Ergänzung:
Die Liste fügt automatisch neu eingefügte Registernamen ein.
Sie aktualisiert sich natürlich nicht mehr automatisch.
Dafür habe ich ein Makro aufgezeichnet. Jetzt läufts.
Könnte ich das auch automatisieren, z.B. beim Öffnen der Datei?
Danke und Gruss
ActiveSheet.Unprotect
Range("D9").Select
ActiveCell.FormulaR1C1 = _
"=IF(ROW(R[-6]C[-3])>COUNTA(x),"""",HYPERLINK(""#'""&INDEX(x,ROW(R[-6]C[-3]))&""'!A1"",MID(INDEX(x,ROW(R[-6]C[-3])),FIND(""]"",INDEX(x,ROW(R[-6]C[-3])))+1,31)))"
Selection.AutoFill Destination:=Range("D9:D199")
Range("D9:D199").Select
Range("D9").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ~f

Anzeige
Workbook_Open
15.05.2013 09:50:23
Klaus
Hi,
erstmal die SELECT und ACTIVATE rauswerfen! Autofill habe ich durch Copy ersetzt, weil ich mir einbilde dass das schneller geht.
ActiveSheet.Unprotect
with Range("D9")
.FormulaR1C1 = _
"=IF(ROW(R[-6]C[-3])>COUNTA(x),"""",HYPERLINK(""#'""&INDEX(x,ROW(R[-6]C[-3]))&""'!A1"",MID( _
INDEX(x,ROW(R[-6]C[-3])),FIND(""]"",INDEX(x,ROW(R[-6]C[-3])))+1,31)))"
'.AutoFill Destination:=Range("D9:D199")
.copy
range("D10:D99").pastespecial
end with
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
das so entstandene Makro funktioniert, ja? Du kannst in "ThisWorkbook" eine Sub namens Private Sub Workbook_Open() anlegen, alles was da drinnen steht wird automatisch ausgeführt wenn die Datei geöffnet wird. Aufpassen: du referenzierst in deinem Rekordercode nicht genügend, das könnte ins Auge gehen. Aufpassen2: Zwar kann man Workbook_Open mit Code zumüllen, das ist aber schlechter Stil. Lieber den Code in ein Modul und aus Workbook_Open nur "call" darauf. Das könnte dann so aussehen:
in "ThisWorkbook"
Private Sub Workbook_Open()
Call neueRegister   'Das CALL ist nicht unbedingt notwendig
End Sub

in "Modul1":
Sub neueRegister()
With Sheets("Tabelle1") ' TABELLENNAME ANPASSEN!
.Unprotect
With .Range("D9")
.FormulaR1C1 = "=IF(ROW(R[-6]C[-3])>COUNTA(x),"""",HYPERLINK(""#'""&INDEX(x,ROW(R[-6]C[- _
3]))&""'!A1"",MID(INDEX(x,ROW(R[-6]C[-3])),FIND(""]"",INDEX(x,ROW(R[-6]C[-3])))+1,31)))"
'.AutoFill Destination:=Range("D9:D199")
.Copy
End With
.Range("D10:D99").PasteSpecial
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End With
End Sub

Anzeige
AW: Workbook_Open
15.05.2013 10:24:04
dani
Hallo Klaus
Überwältigend, deine Antwort. Herzlichen Dank.
Das Makro läuft, ausser beim Start der Datei,
da erscheint die Meldung "Fehler beim Kommpilieren Mehrdeutiger Name".
Es geht dabei um neueRegister.
Gruess
Dani

AW: Workbook_Open
15.05.2013 10:28:16
Klaus
Hi Dani,
da erscheint die Meldung "Fehler beim Kommpilieren Mehrdeutiger Name".
dann hast du den Namen "neueRegister" mehrfach vergeben.
Benenn mal mein Makro eindeutig um (an beiden Stellen!)
Private Sub Workbook_Open()
Call neueRegisterIchHabeMeineKatzeLieb
End Sub
Sub neueRegisterIchHabeMeineKatzeLieb()
With Sheets("Tabelle1") ' TABELLENNAME ANPASSEN!
[...]
End With
End Sub

Wenn der Fehler dann noch Auftritt und du mir glaubhaft versichern kannst, dass du den Namen "neueRegisterIchHabeMeineKatzeLieb" noch nicht vergeben hast, dann lad bitte die Datei hoch.
Grüße,
Klaus M.vdT.

Anzeige
AW: Workbook_Open
15.05.2013 11:21:43
dani
Hallo Klaus
werde mich vermutlich erst morgen darum kümmern können.
Hab lieber Hunde als Katzen :-)))
Grüsse
Dani

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige