Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1180to1184
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

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
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
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

Anzeige
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

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige