Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
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 Fehlermeldung

Makro Fehlermeldung
26.08.2019 17:01:00
Christian
Hallo,
wieso kommt es beim Ausführen von Makro 3 zu der Fehlermeldung?
Was kann ich da machen?
https://www.herber.de/bbs/user/131632.xlsm
Danke für eure Hilfe
Christian

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro Fehlermeldung
26.08.2019 17:25:36
Regina
Hi,
diese Zeile löst ja den Fehler aus:
.Range("G2:J" & loLetzte).Value = .Range("G2:J" & loLetzte).Value
Was soll diese Zeile? Den Inhalt von G2 bis JX auf G2 bis JX übertragen?
Gruß
Regina
AW: Makro Fehlermeldung
26.08.2019 18:01:33
Toni
Hi Christian,
schau Dir mal den Namen des Worksheets genau an.
lG
Toni
ne sry, das wars nicht .. oT
26.08.2019 18:03:20
Toni
AW: Makro Fehlermeldung
26.08.2019 19:22:59
Christian
Hallo Regina,
ich will damit bezwecken, dass im Bereich G2:J169 statt den Formeln die Werte eingefügt werden.
Aber irgendwie zweifele ich dass es daran liegt, zu Beginn des Makros mache ich ja mit den Spalten B, C, E und K nichts anderes und da funktioniert es.
Ich vermute es liegt entweder an den Daten oder den Formeln,
mit diesen Daten und geringfügig anderen Formeln in G:K funktioniert es.
Aber es soll ja auch mit den anderen funktionieren
https://www.herber.de/bbs/user/131634.xlsm
Gruß
Christian
Anzeige
AW: Makro Fehlermeldung
26.08.2019 19:24:24
onur
Ich habe dir eben auch was gepostet.
AW: Makro Fehlermeldung
26.08.2019 19:10:06
onur
Ich nehme an, du willst in G-J statt Formeln nur Werte haben:
           .....
If x > 1 Then
.Cells(x, 2).Resize(1, 2).Copy .Range("B1")
.Cells(x, 7).Resize(1, 5).Copy .Range("G1")
.Cells(x, 5).Copy .Range("E1")
.Rows(x).Value = .Rows(x).Value
End If
.Range("G1:J1").Copy .Range("G2:J" & loLetzte)
.Range("G2:J" & loLetzte).Copy
.Range("G2:J" & loLetzte).PasteSpecial xlPasteValues
.Cells(x, 12) = Empty 'markierung löschen
.Range("E2").Select
End With
End Sub

AW: Makro Fehlermeldung
26.08.2019 19:28:08
Christian
Hallo Onur,
das stimmt, so funktioniert es. Aber woran es jetzt lag, hab ich immer noch nicht verstanden.
Vor allem weil es mit den anderen Daten, die ich in der zweiten Bsp Datei benutzt habe, funktioniert hat.
Nur eins hab ich noch, nach dem Ausführen ist immer noch der gestrichelte Rahmen um den Bereich G2:J169, wie wenn man etwas kopieren möchte. Geht das auch ohne dass dieser übrig bleibt?
E2 auszuwählen reicht mir und genau genommen braucht es nicht mal das.
Gruß und danke
Christian
Anzeige
AW: Makro Fehlermeldung
26.08.2019 19:29:54
onur
Einfach vor End Sub:
Application.CutCopyMode = False

AW: Makro Fehlermeldung
26.08.2019 19:35:46
Christian
Hallo Onur,
ich weiß auch wenn das nur Schönheitskorrekturen sind, meinst du du könntest mir helfen, dass das Makro das auch übernimmt, bislang tut es das nicht, weil es vorher nie negative Zahlen in der Tabelle gab.
Und zwar dass es dafür sorgt, dass die negativen Zahlen als Zahl ohne Nachkommastellen formatiert sind und die positiven als Datum im Format TT.MM.JJJJ
und zwar in folgenden Spalten
Ergebnis: Spalte F, I und K sowie
Leute: Spalte C.
Danke
Christian
Anzeige
AW: Makro Fehlermeldung
26.08.2019 19:37:36
onur
Mach einfach 2 bed. Formatierungen - das reicht.
Schade, Begründung hätte mich interessiert ...
26.08.2019 20:53:31
Toni
... weiß jmd den Grund für die Fehlermeldung "Anwendungs- oder Objektdefinierter Fehler" in diesem Zusammenhang?
lG
Toni
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 21:13:08
Christian
Hallo Toni,
mich als Fragesteller würde mich der Grund auch interessieren, vor allem, da bei dem einen Datensatz den ich in der ersten Beispieldatei hochgeladen habe die Meldung aufgetreten war und bei dem in der zweiten Datei nicht, die Tabellen waren von der Struktur identisch. Die Formeln abgesehen davon dass ich in der zweiten Tabelle noch geprüft habe ob F1 leer ist auch. Es kann also eigentlich nur an den Daten selbst liegen, z.B. daran dass in der nicht funktionierenden Tabelle negative Zahlen in den betroffenen Spalten vorkommen und in der funktionierenden Tabelle nicht.
Aber woran es jetz wirklich liegt, da bin ich als Fragesteller überfragt.
Gruß
Christian
Anzeige
sehe grad...
26.08.2019 21:16:33
Christian
du hattest noch den Vorschlag mit dem Blattnamen gemacht, auch wenn es nicht die Lösung war, trotzdem danke dass du dir mein Problem angeschaut hast und dir die Mühe gemacht hast, es zu lösen.
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 21:28:55
onur
Ganz einfach: Excel stört sich 1.)
daran, dass du negative Zahlen in Zellen versuchst zu schreiben, die als Datum formatiert sind.
Wenn du Value2 statt des 2. Value nimmst, klappt es jedoch, da Value2 alles als Zahlen nimmt.
Und 2.)
Ausserdem sollte der Rangebereich fix und nicht variabel sein:
Sub Makro3()
Dim rng
Dim loLetzte As Long, j As Long, x As Long
Application.ScreenUpdating = False
With Worksheets("Ergebnis")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("B1:C1").Copy .Range("B1:C" & loLetzte)
.Range("B2:C" & loLetzte).Copy
.Range("B2:C" & loLetzte).PasteSpecial xlPasteValues
.Range("E1").Copy .Range("E2:E" & loLetzte)
.Range("E2:E" & loLetzte).Copy
.Range("E2:E" & loLetzte).PasteSpecial xlPasteValues
.Range("K1").Copy .Range("K1:K" & loLetzte)
.Range("K2:K" & loLetzte).Copy
.Range("K2:K" & loLetzte).PasteSpecial xlPasteValues
.Columns("K:K").Copy
.Columns("F:F").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Range("L1") = "Formel"  'Zeile 1 markieren!!
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("C1:C" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("F1:F" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:L" & loLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Zeile der Markierung in Spalte l suchen
x = .Cells(Rows.Count, 12).End(xlUp).Row
'Formeln ggf. in Zeile1 zurück kopieren
If x > 1 Then
.Cells(x, 2).Resize(1, 2).Copy .Range("B1")
.Cells(x, 7).Resize(1, 5).Copy .Range("G1")
.Cells(x, 5).Copy .Range("E1")
.Rows(x).Value = .Rows(x).Value
End If
Set rng = .Range("G2:J" & loLetzte)
.Range("G1:J1").Copy rng
rng.Value = rng.Value2
.Cells(x, 12) = Empty 'markierung löschen
.Range("E2").Select
End With
End Sub

Anzeige
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 21:55:01
Christian
Hallo Onur,
ok, das leuchtet mir ein , wenn Excel das nicht so toll findet ist das wohl so, aber mir bleibt nichts anderes übrig, lasse ich diese Zeilen weg, ergeben sich in den Spalten I und J andere, nicht von mir gewünschte Ergebnisse.
Gruß
Christian
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 21:55:46
Toni
Na Christian, da haben wir nun beide eine Antwort auf Deine Frage erhalten ^^.
Negatives Datum kennt er nicht. Bist'n Schatz, Onur, Vielen Dank!!
Wenn ich jetzt mal Christians Code nehme und nur aus dem 2. Value ein Value2 mache, dann läuft er durch, stört sich dann allerdings an der Select-Zeile -warum auch immer. Ich würde die wahrscheinlich ganz wegnehmen, aber irgendwie hat der Code es in sich, und man (ich) sehs ihm nicht an.

.Range("G2:J" & loLetzte).Value = .Range("G2:J" & loLetzte).Value2
.Cells(x, 12) = Empty 'markierung löschen
          .Range("E2").Select

lG und einen schönen Abend Euch!!
Toni
Anzeige
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 21:59:20
Christian
Hallo Toni,
ich bin bislang noch nicht dazu gekommen, das letzte Makro voon Onur zu testen, da z.Zt ein anderes Makro mit einer anderen Auswertung läuft und das wohl auch noch bis in die späte Nacht dauert. Aber sein Vorschlag davor wo er nur den unteren Teil des Makros geändert hat, hat in meiner Originaltabelle ohne Fehler funktioniert.
Gruß
Christian
AW: Schade, Begründung hätte mich interessiert ...
26.08.2019 22:04:38
Toni
Hi Christian,
bin sicher, dass Onurs Code funktioniert!
Bin jetzt selbst drauf gekommen. Indirekt, war es meine erste Vermutung. Er selektiert nur, wenn die "Ergebnis" aktiv, was ja irgendwie auch logisch ist. Da ich select sonst nicht benutze, ist mir das nie aufgefallen.
Also nochmal Danke an Euch beide!
lG
Toni
Anzeige
kann man noch eine Sache einfügen?
27.08.2019 10:58:29
Christian
Ich habe noch eine kleine Änderung vorgenommen, das Makro fängt jetzt mit Spalte K an, statt vorher mit B:C.
Wenn die Werte in Spalte K eingefügt wurden, was muss ich dann ins Makro einfügen, damit er alle Zeilen löscht, in denen Spalte K nichts seht, bevor er mit Spalten B:C weitermacht?
Danke
Christian
Sub Makro3()
Dim loLetzte As Long, j As Long, x As Long
Application.ScreenUpdating = False
With Worksheets("Ergebnis")
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row
.Range("K1").Copy .Range("K1:K" & loLetzte)
.Range("K2:K" & loLetzte).Copy
.Range("K2:K" & loLetzte).PasteSpecial xlPasteValues
.Range("B1:C1").Copy .Range("B1:C" & loLetzte)
.Range("B2:C" & loLetzte).Copy
.Range("B2:C" & loLetzte).PasteSpecial xlPasteValues
.Range("E1").Copy .Range("E2:E" & loLetzte)
.Range("E2:E" & loLetzte).Copy
.Range("E2:E" & loLetzte).PasteSpecial xlPasteValues
.Columns("K:K").Copy
.Columns("F:F").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Range("L1") = "Formel"  'Zeile 1 markieren!!
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range("C1:C" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=.Range("F1:F" & loLetzte), SortOn:=xlSortOnValues, _
Order:=xlDescending, DataOption:=xlSortNormal
With .Sort
.SetRange Range("A1:L" & loLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Zeile der Markierung in Spalte l suchen
x = .Cells(Rows.Count, 12).End(xlUp).Row
'Formeln ggf. in Zeile1 zurück kopieren
If x > 1 Then
.Cells(x, 2).Resize(1, 2).Copy .Range("B1")
.Cells(x, 7).Resize(1, 5).Copy .Range("G1")
.Cells(x, 5).Copy .Range("E1")
.Rows(x).Value = .Rows(x).Value
End If
.Range("G1:J1").Copy .Range("G2:J" & loLetzte)
.Range("G2:J" & loLetzte).Copy
.Range("G2:J" & loLetzte).PasteSpecial xlPasteValues
.Cells(x, 12) = Empty 'markierung löschen
.Range("E2").Select
End With
Application.CutCopyMode = False
End Sub

Anzeige
AW: kann man noch eine Sache einfügen?
27.08.2019 19:19:20
Toni
Hi Christian,
probier mal:
Columns(11).SpecialCells(4).Rows.EntireRow.Delete
lG
Toni
AW: kann man noch eine Sache einfügen?
27.08.2019 20:17:13
Christian
Hallo Toni, da sagt mir excel leider "Keine Zellen gefunden", obwohl Leerzellen da sind.
Kann es damit zusammenhängen, dass vorher in den besagten Zellen Formeln standen, die lediglich "" ausgegeben haben und dann statt den Formeln Werte eingefügt wurden?
Gruß
Christian
AW: kann man noch eine Sache einfügen?
27.08.2019 20:55:44
Toni
Hi,
dann versuchen wir es als Schleife:
Sub RowsDel()
Dim i As Long, lC As Long
With Worksheets("Ergebnis")
lC = .Cells(Rows.Count, 11).End(xlUp).Row
For i = lC To 2 Step -1
If .Cells(i, 11).Value = "" Then
.Rows(i).Delete
End If
Next i
End With
End Sub
Du kannst das Makro entweder direkt einbauen, dann einfach alles entfernen, was Du schon im Deinem Makro hast, oder du gibst an der Stelle in Deinem Makro, wo er die Zeilen löschen soll das hier ein:
Call RowsDel
und dann einfach weiter, wie gehabt.
lG
Toni
Anzeige
AW: kann man noch eine Sache einfügen?
28.08.2019 08:03:16
Christian
Hallo Toni,
jetzt kommt zumindest mal keine Meldung mehr.
Allerdings sind aktuell auch keine Zeilen da die gelöscht werden müssen. Werde im Laufe des Tages neue Daten einpflegen und evtl. ist dann etwas dabei um es weiter zu testen.
Gruß
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige