Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro funktioniert nicht aus pers. Arbeitsmappe

Makro funktioniert nicht aus pers. Arbeitsmappe
emem2404
Hallo Leute,
nun habe ich hier das tolle Script erhalten und das funktioniert tatellos, solange das Makro direkt aus der Arbeitsmappe gestartet wird, sobald ich das Makro in meiner persönlichen Arbeitsmappe speichere und von dort ausführe, hängt es sich immer bei Zeile:
LRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
auf. Ich bekomme die Meldung: Laufzeitfeler '424' Objekt erforderlich
Ich finde den Fehler nicht. Kann mir jemand sagen, was ich falsch mache?
Vielen lieben Dank!
Hier das Makro:

Sub Start_Beispiel()
Dim oDic(1 To 5) As Object
Dim meAr()
Dim A&, LRow&
Dim tmpText$
For A = 1 To 5
Set oDic(A) = CreateObject("Scripting.Dictionary")
Next A
With Tabelle1
meAr = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 5)
End With
For A = 1 To UBound(meAr)
tmpText = meAr(A, 1) & meAr(A, 2)
If oDic(1).Exists(tmpText) Then
oDic(3)(tmpText) = oDic(3)(tmpText) + meAr(A, 3)
oDic(4)(tmpText) = oDic(4)(tmpText) + meAr(A, 4)
oDic(5)(tmpText) = oDic(5)(tmpText) + meAr(A, 5)
Else
oDic(1)(tmpText) = meAr(A, 1)
oDic(2)(tmpText) = meAr(A, 2)
oDic(3)(tmpText) = meAr(A, 3)
oDic(4)(tmpText) = meAr(A, 4)
oDic(5)(tmpText) = meAr(A, 5)
End If
Next A
With Tabelle2
LRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
If LRow > 2 Then
.Range("A2:E2").Resize(LRow - 1).Clear
End If
.Range("A2").Resize(oDic(1).Count) = WorksheetFunction.Transpose(oDic(1).Items)
.Range("B2").Resize(oDic(2).Count) = WorksheetFunction.Transpose(oDic(2).Items)
.Range("C2").Resize(oDic(3).Count) = WorksheetFunction.Transpose(oDic(3).Items)
.Range("D2").Resize(oDic(4).Count) = WorksheetFunction.Transpose(oDic(4).Items)
.Range("E2").Resize(oDic(5).Count) = WorksheetFunction.Transpose(oDic(5).Items)
.Select
End With
End Sub

Gruß
MARTIN
Anzeige
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 10:47:01
Hajo_Zi
Hallo Martin,
With Tabelle2 bezieht sich auf die Personal.x...
Gruß Hajo
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 10:51:31
emem2404
hmm,
hatte mir schon soetwas in diese Richtung gedacht, habe aber keine Lösung dafür.
Gibt es einen Befehl, der bewirkt, dass in der aktuell geöffneten Arbeitsmappe ein zweites Tabellenblatt mit dem Namen "Übersicht" erstellt wird und das Makro die "Endbearbeitung" in dieser Tabelle vornimmt?
Danke!
Gruß
MARTIN
Anzeige
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 11:24:25
Hajo_Zi
Hallo Martin,
ich arbeite immer mit Namen und nicht den internen Namen.
Vielleicht reich dies bei Dir
With ActiveWorkbook.tabelle2

AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 12:57:28
emem2404
Hallo Hajo,
jetzt bleibt es bei dem Eintrag
With ActiveWorkbook.Tabelle2
hängen und ich erhalte die Fehlermeldung
Laufzeitfehler '438' Objekt unterstützt diese Eigenschaft oder Methode nicht
Dabei war ich schon so stolz, dass die Berechnung funktionierte, warum bekomme ich das jetzt nicht hin?

Sub Start_Beispiel()
Dim oDic(1 To 5) As Object
Dim meAr()
Dim A&, LRow&
Dim tmpText$
For A = 1 To 5
Set oDic(A) = CreateObject("Scripting.Dictionary")
Next A
With Tabelle1
meAr = .Range("A2", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 5)
End With
For A = 1 To UBound(meAr)
tmpText = meAr(A, 1) & meAr(A, 2)
If oDic(1).Exists(tmpText) Then
oDic(3)(tmpText) = oDic(3)(tmpText) + meAr(A, 3)
oDic(4)(tmpText) = oDic(4)(tmpText) + meAr(A, 4)
oDic(5)(tmpText) = oDic(5)(tmpText) + meAr(A, 5)
Else
oDic(1)(tmpText) = meAr(A, 1)
oDic(2)(tmpText) = meAr(A, 2)
oDic(3)(tmpText) = meAr(A, 3)
oDic(4)(tmpText) = meAr(A, 4)
oDic(5)(tmpText) = meAr(A, 5)
End If
Next A
With ActiveWorkbook.Tabelle2
LRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
If LRow > 2 Then
.Range("A2:E2").Resize(LRow - 1).Clear
End If
.Range("A2").Resize(oDic(1).Count) = WorksheetFunction.Transpose(oDic(1).Items)
.Range("B2").Resize(oDic(2).Count) = WorksheetFunction.Transpose(oDic(2).Items)
.Range("C2").Resize(oDic(3).Count) = WorksheetFunction.Transpose(oDic(3).Items)
.Range("D2").Resize(oDic(4).Count) = WorksheetFunction.Transpose(oDic(4).Items)
.Range("E2").Resize(oDic(5).Count) = WorksheetFunction.Transpose(oDic(5).Items)
.Select
End With
End Sub

Wo liegt der Fehler? Ich bitte um Eure Hilfe!
Vielen Dank!
Gruß
MARTIN
Anzeige
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 13:05:53
Hajo_Zi
Hallo Martuin,
hat die Datei auch wirklich eine Tabelle mit dem internen Namen"Tabelle2" nicht das was auf dem Register steht.
Gruß Hajo
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 13:16:40
emem2404
Hallo Hajo,
ja es gibt die Tabelle2 tatsächlich und was mich am meisten wurmt ist, dass das Makro, wenn ich es direkt in einer Arbeitsmappe ausführe funktioniert, nur sobald ich das Makro in meiner persönlöichen Makroarbeitsmappe speichere, so dass mir das Makro auch für jede neue Datei zur Verfügung steht, es nicht funktiooniert und das sogar bei der Datei in der es zuvor direkt funktioniert hat.
Das verstehe ich einfach nicht!
Gruß
MARTIN
Anzeige
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 14:52:27
Tino
Hallo,
wenn Du aus einer anderen Datei heraus mit dem Objektnamen der Tabelle arbeitest geht dies so nicht.
Sprich die Tabelle mit dem Register- Namen an oder finde mit einer Schleife heraus welche Tabelle aus der aktiven Datei den Objektnamen Tabelle2 hat.
Sollte so funktionieren.
Sub Start_Beispiel()
Dim oDic(1 To 5) As Object
Dim meAr(), ArrayTab(1) As Worksheet
Dim A&, LRow&, nCount%
Dim tmpText$
With ActiveWorkbook
For A = 1 To .Sheets.Count
Select Case .Sheets(A).CodeName
Case "Tabelle1", "Tabelle2"
Set ArrayTab(nCount) = .Sheets(A)
nCount = nCount + 1
End Select
If nCount = 2 Then Exit For
Next A
End With
If nCount  2 Then
.Range("A2:E2").Resize(LRow - 1).Clear
End If
.Range("A2").Resize(oDic(1).Count) = WorksheetFunction.Transpose(oDic(1).Items)
.Range("B2").Resize(oDic(2).Count) = WorksheetFunction.Transpose(oDic(2).Items)
.Range("C2").Resize(oDic(3).Count) = WorksheetFunction.Transpose(oDic(3).Items)
.Range("D2").Resize(oDic(4).Count) = WorksheetFunction.Transpose(oDic(4).Items)
.Range("E2").Resize(oDic(5).Count) = WorksheetFunction.Transpose(oDic(5).Items)
.Select
End With
End Sub
Gruß Tino
Anzeige
AW: Makro funktioniert nicht aus pers. Arbeitsmappe
14.10.2010 15:14:57
emem2404
Hallo Tino,
GENIAL - vielen Dank!
Es funktionierte auf Anhieb und auch mit komplett neuen Daten!
Klasse!
Lieben Gruß
MARTIN
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige