Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zellen auslesen





Frage

hallo zusammen, ich habe eine frage, vor mir liegt in etwa so etwas: %r 12 12 22 %RES 1 1 2 5 %* 22 2 22 %RES 1 1 1 1 1 9 %* 1 1 12 33 %RES 12 12 12 14 143 %* a %RES END Mein makro soll folgendes können: immer wenn es auf %RES trifft 2 zeilen runter gehen und dann die nachfolgenden werte bis zu %* auslesen (untereinander) und das immer wieder bis es auf %RES END stößt ( wie viele solche forgänge es gibt ist variabel) hier würde das ergebnis dann so aussehen sollen: 1 2 5 1 1 1 1 9 12 12 14 143 vielen dank im voraus, vllt kann mir ja jemand helfen gruß sebal

Antwort 1 von coros

HAllo Sebal,

nachfolgendes Makro sollte das machen, was Du Dir vorgestellt hast.

Mit dem Makro wird Spalte A nach Deinen Vorgaben, also "%RES" und "%*" durchsucht und die dazwischen liegenden Daten werden in ein Tabellenblatt mit dem Namen "Auswertung", das automatisch erzeugt wird, kopiert.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Suchen_und_kopieren()
Dim iRow As Long
Dim jRow As Long
Dim strAktSheet As String
Dim iSheets As Integer
Application.ScreenUpdating = False
strAktSheet = ActiveSheet.Name

For iSheets = Worksheets.Count To 1 Step -1
If Sheets(iSheets).Name = "Auswertung" Then
Application.DisplayAlerts = False
Sheets(iSheets).Delete
Application.DisplayAlerts = False
Exit For
End If
Next
With Worksheets.Add
.Name = "Auswertung"
End With

For iRow = 1 To Sheets(strAktSheet).Range("A65536").End(xlUp).Row
    If Sheets(strAktSheet).Cells(iRow, 1) = "%RES END" Then Exit Sub
    
    If Sheets(strAktSheet).Cells(iRow, 1) = "%RES" Then
        For jRow = iRow + 2 To Sheets(strAktSheet).Range("A65536").End(xlUp).Row
            If Sheets(strAktSheet).Cells(jRow, 1) = "%*" Then
                Sheets(strAktSheet).Range("A" & iRow + 2 & ":A" & jRow - 1).Copy
                Sheets("Auswertung").Cells(Sheets("Auswertung").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
            Exit For
            End If
        Next jRow
    End If
Next iRow
End Sub


Ich hoffe, Du kommst klar.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

Bei Fragen melde Dich.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 2 von sebal

hallo oliver,

vielen dank erst mal,
die probe mit einer Testdatei hat schon mal funktioniert, jetzt muss ich es nur noch mit der orginaldatei versuchen,
in wie fern ändert sich das makro, wenn ich nicht 2 sonder 5 zeilen runter gehen möchte? vielen dank nochmals

gruß sebal

Antwort 3 von coros

Hallo sebal,

Du musst in dem Makro in den Zeilen

For jRow = iRow + 2 To Sheets(strAktSheet).Range("A65536").End(xlUp).Row


und

Sheets(strAktSheet).Range("A" & iRow + 2 & ":A" & jRow - 1).Copy


die Zahl 2 hinter dem Pluszeichen ( + ) gegen die Zahl 5 tauschen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von sebal

hallo oliver,

danke, hab ich selbst raus gefunden.

ABER:
nun möchte ich auf den bereich den dein programm ausgelesen hat (egal wie groß dieser ist, kann variabel sein) zugreifen und seinen Minimum und MAximum ausrechen, dieser wert soll dann in dem Arbeitsblatt Tabelle1 in A589 bzw A590 stehen.

nach deinem makro habe ich folgendes angehängt, aber hat nicht funktioniert:

Dim M As Long
M = Application.WorksheetFunction.Min(Range("A2:A8"))
Range("C2").Value = M

vllt kannst du mir auch hierbei helfen, vielen dank
gruß sebal

Antwort 5 von coros

Hallo sebal,

nicht verständlich, was Du genau willst. Welchen Bereich meinst Du? Den in dem Tabellenblatt, in dem alle Daten stehen oder den Bereich, in dem Tabellenblatt "Auswertung" was ja automatisch erzeugt wird.

Du schreibst, dass der Wert in A589 bzw. A590 angezeigt werden soll. Nach welchen Kriterium entscheidet es sich denn, in welcher der beiden Zellen das Ergebnis angezeigt werden soll?

Was hat das mit Deinem Beispielmakro auf sich? In dem Makro sind keinerlei Daten bzw. Bereiche, von denen Du vorher gesprochen hast.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von sebal

hallo oliver,

es bezieht sich auf den bereich der "neu" entstanden ist in dem Tabellenblatt Auswertung, hiervon möchte ich das minimum u maximum haben, es soll bei meiner orginaldatei (von mir festgelegt) in Zellen A 589 (Min) u A590(Max) stehen.

in meinem makor habe ich ja nur irgend welche bereiche hingeschrieben, arbeite ja zur zeit nur mit einer test datei, in meiner orginal datei soll das min bzw max in A589 bzw A590 stehen, wo es im testbeispiel steht ist eigtl egal deswegen etwas verwirrend.

vllt zum verständnis mein bisheriges orginal makor sieht so aus ( hat aber mit dem was ich dich frage nichts zu tun ), dieser bereich den du mit deinem makro ansprichst ist in jeder datei die mein orginal makro öffnen kann vorhanden also %RES %* und % RES END

kmappe = ActiveWorkbook.Name
ksheet = ActiveSheet.Name

muifilename = Application.GetOpenFilename("MUI-File (*muf), *muf", 1, "please select MUI-File")
muiabb = Trim(muifilename)
If muiabb = "Falsch" Then Exit Sub




Workbooks.OpenText Filename:=muifilename, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, Comma:= _
False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1) _
, Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))


ActiveSheet.Range("K20:AZ1200").Select
Selection.ClearContents
ActiveSheet.Range("AD140").Select
ActiveCell.Value = muifilename


kabb = 0
kspx = 0
k = 1
kcol = 2
krow = 1
kstream = 0
kvar = 0
kts = 0
lfound = False

kspalte = 30
kreihe = 145
With ActiveSheet
.Cells(krow, kcol).Select
If Cells(1, kcol) = "%%CONT" Then
Do Until lfound
krow = krow + 1
If .Cells(krow, kcol).Value = "%%RES4w" Then
krow = krow + 2
lfound = True
Exit Do
End If
If krow = 10000 Then
krow = 1
lfound = True
kabb = 1
Exit Do
End If
Loop
lfound = False
Do Until lfound
If kabb = 1 Then
lfound = True
Exit Do
End If

.Range(Cells(krow, kcol), Cells(krow, kcol + 6)).Copy
.Cells(kreihe, kspalte).Select
.Paste
krow = krow + 1
kspalte = kspalte + 6
If .Cells(krow, kcol).Value = "%parting" Then
kreihe = kreihe + 1
kspalte = 30
End If
If .Cells(krow, kcol).Value = "%%ZIG1" Then
lfound = True
Exit Do
End If
If krow = 10000 Then
krow = 1
lfound = True
Exit Do
End If
Loop
End If



End With
kmui = ActiveWorkbook.Name

Range("AD140:IG650").Select
Selection.Copy
Windows(kmappe).Activate
Sheets("Tabelle3").Activate
Range("AB140:IE650").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets(ksheet).Select
Windows(kmui).Close

also mir geht es nochamls darum, wie ich nun minimu und maximum berechnen kann aus dem bereich in auswertung, wieso funkt das so wie ich es gemacht habe nicht

danke
sebal

Antwort 7 von sebal

hallo oliver,

auf deiner HP steht wie man das makro als zusätzliches modul in den VB editor bekommt, ich möchte jedoch dieses makor in meinem programm integriert haben oder geht das nicht?

oder kann man es zusätzlich wie auf deiner HP beschreiben einfügen und dann beide module gleichzeitig laufen lassen?

mein bisheriges programm ist das in meiner vorherigen antwort.

gruß sebal

Antwort 8 von sebal

hallo nochmal,

jetzt habe ich bei meiner testdatei ein neues module erstellt:

sub min()

Dim M As Long
M = Application.WorksheetFunction.Min(Range("A2:A8"))
Range("C2").Value = M

End Sub

dieses hat dann funktioniert, wieso?

und wieso funktioniert es nicht, wenn ich es einfach unter dein makro schreibe, das verstehe ich nicht.

danke
gruß sebal

Antwort 9 von coros

Hallo sebal,

in welchem Tabellenblatt sollen die beiden Werte erscheinen? In dem neu erzeugten Blatt "Auswertung" oder in dem Blatt, in dem sich die Originaldaten befinden?
Wenn die beiden Werte in dem Originalblatt erscheinen sollen, gehe ich dann richtig in der Annahme, dass die Zahlenreihe, die Du asuwerten willst, spätestens in Zeile 588 in Spalte A aufhört? Das müsste man noch wissen.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 10 von coros

Hallo sebal,

der Grund, warum das mit dem von mir geposteten Makro nicht funktioniert ist, weil sobald "%RES END" gefunden wird, das Makro beendet wird. Man muss hier mit einer Sprungmarke arbeiten.

Aber trottzdem muss man noch die Antworten auf meine Frage aus AW9 haben, um das abzuändern.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 11 von sebal

hallo oliver,

die werte sollen in dem tabellenblatt erscheinen, aus dem die werte stammen deines makors also in dem ausgangsblatt nicht im auswertung blatt.

nein! der bereich auf den das min_max makro zugreifen soll ist beliebig groß, aber nur in spalte A also zb von A2 bis A65000

ABER:
bei meiner testdatei hat es funktioniert, ich habe nur keine ahnung wie ich es in mein orginal programm zum laufen bekomme.

gruß sebal

Antwort 12 von sebal

ich möchte ja dass es bei % RES END endet

Antwort 13 von coros

Hallo sebal,

Du hast mich falsch verstanden. Das Makro sucht nach Deinen Vorgaben also "%RES" und "%*" und macht dann etwas. Das Makro sucht in der Spalte A in dem Blatt mit den Originaldaten. Wenn Du nun schreibst, dass der Min- und Maxwert in der gleichen Spalte in Zelle A589 und A590 eingetragen werden sollen, gehe ich erst mal davon aus, dass die Daten, die durchsucht werden sollen, sich im Bereich A1 bis A588 befinden. Ist das richtig oder wird hier eventuell die falsche Spalte nach Deinen Kriterien durchsucht. Du musst schon ein paar Angaben zu Deiner Datei machen, denn ich kenne die natürlich nicht so wie Du.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 14 von sebal

hallo oliver,

ich hab dir doch mein bisheriges programm gesendet,

das makor von dir funktioniert bei meiner testdatei, wie muss ich es nun in mein programm tun damit es hier ebenfalls funktioniert. ausserdem funktuioniert mein min_max makro bei der testdai ebenfalls, bin allerdings ebenfalls überfordert, wie ich es in mein orginal makro bekomme, so dass es funkioniert?

weist du da rat?
gruß sebal

Antwort 15 von coros

Hallo sebal,

ich habe keine Datei von Dir. Bitte beantworte doch die Fragen, sonst sitzen wir hier noch ewig an dem Problem. Um Dir ein funktionierendes Makro hier hinzuschreiben, muss ich Antworten auf die Fragen haben.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 16 von sebal

ach so, dann haben wir aneinader vorbei geredet, sorry!

nein, der bereich der durchsucht wrid endet bei %RES END kann jedoch auch bis Zelle A19000 oder so gehen. aber wie gesagt dien makro funktioniert bei meiner testdatei(die die ich in meiner frage am anfang steht).

also der minimum u maximum wert soll in Zelle AA589 bzw AA590 stehen, sorry mein fehler.

danke gruß sebal

Antwort 17 von coros

Hallo Sebal,

wo sollen denn nun die beiden Werte erscheinen. Du schreibst in allen Beiträgen A589 und A590. Daher auch meine Frage, bis wo die Daten gehen könnten.. Nun schreibst Du aber AA589 und AA590. Was ist denn nun richtig?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 18 von sebal

hallo

die werte sollen nicht bis A589 oder AA589 gehen, sondern der min wert soll in AA589 stehen und der max wert soll in AA590 stehen.

der bereich der durchsucht werden soll ist abhängig von der datei in meinem beispeil das ich dir geschrieben habe ist der bereich den min_max makro durchsuchen soll A2:A8 in Auswertung, aber das ist wie gesagt variabel.

bei meinem min_max makro fukt es aber auch wenn ich A2:A30000 durchsuche obwohl nur bis A8 ein wert steht.

aber wie gesagt bei meiner testdatei die ich dir geschrieben habe fukt alles soweit nur in meiner orginaldatei gibts probs
sebal

Antwort 19 von coros

Hallo sebal,

wenn es um die Zellen AA589 und AA590 geht, dann sieht das wie folgt aus.

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

Option Explicit

Sub Suchen_und_kopieren()
Dim iRow As Long
Dim jRow As Long
Dim strAktSheet As String
Dim iSheets As Integer
Application.ScreenUpdating = False
strAktSheet = ActiveSheet.Name

For iSheets = Worksheets.Count To 1 Step -1
If Sheets(iSheets).Name = "Auswertung" Then
Application.DisplayAlerts = False
Sheets(iSheets).Delete
Application.DisplayAlerts = False
Exit For
End If
Next
With Worksheets.Add
.Name = "Auswertung"
End With

For iRow = 1 To Sheets(strAktSheet).Range("A65536").End(xlUp).Row
If Sheets(strAktSheet).Cells(iRow, 1) = "%RES END" Then GoTo Ende

If Sheets(strAktSheet).Cells(iRow, 1) = "%RES" Then
For jRow = iRow + 2 To Sheets(strAktSheet).Range("A65536").End(xlUp).Row
If Sheets(strAktSheet).Cells(jRow, 1) = "%*" Then
Sheets(strAktSheet).Range("A" & iRow + 2 & ":A" & jRow - 1).Copy
Sheets("Auswertung").Cells(Sheets("Auswertung").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
Exit For
End If
Next jRow
End If
Next iRow
Ende:
Sheets(strAktSheet).Range("AA590") = Application.WorksheetFunction.Max(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row))
Sheets(strAktSheet).Range("AA589") = Application.WorksheetFunction.Min(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row))
End Sub



MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 20 von sebal

hallo

in wie fern ändert sich dein am anfang geschriebenes makro wenn nicht die spalte A untersucht wird sondern %RES %* %RES END und alle werte in Spalte B stehen würden

sebal

Antwort 21 von coros

Hallo sebal,

Du verstehst scheinbar nicht, was ich schreibe. Es geht mir nicht um einen Bereich von A589 bis AA589, sondern einmal schreibst Du die Zelle A589 und A590, dann aber AA589 und AA590. Daher wollte ich wissen, um welche Zellen es sich nun wirklich handelt. Du musst Dir schon Deine Beiträge durchlesen und richtige Angaben machen.

Das Makro aus meiner AW19 sollte funktionieren.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 22 von sebal

hallo oliver,

danke für deine mühe, bei meiner testdatei hat es nun so funktioniert wie ich meinte.

und wie bekomme ich das makor nun in mein eigenes makro das ich dir oben geschrieben habe rein oder fehlen dir dazu infos?

MfG
sebal

Antwort 23 von coros

Hallo sebal,

sorry, aber Deinen Beitrag 20 verstehe ich nicht so richtig. Was ändert sich denn, nur die Spalte oder auch etwas anderes? Bitte schreibe doch mal, was genau Du möchtest. Eine genau Beschreibung bringt ein ziemlich genaues Ergebnis.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 24 von coros

Hallo sebal,

ich werde Dir jetzt erst mal nicht mehr weiterhelfen können, da ich zu einem Termin muss. Ich melde mich dann nachmittags wieder.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 25 von sebal

hallo

ich habe schon gemerkt dass es zu einem ziemlich guten ergebnis führen kann, sorry aber Beitrag 20 ist doch verständlich.

ich meine nur:
wie verändert sich das makro wenn es quasi nicht spalte A komplett durchsuchen soll auf %RES %* usw. sondern wenn diese Dinge in Spalte B stehen würden und das programm diese spalte untersuchen sollte?

danke
gruß sebal

Antwort 26 von sebal

hallo oliver,

nun nochmal zu beitrag 20:
die datei sieht nun wie folgt aus:

A B C D ...
%r
12
12
22
%RES
1
1
2
5
%*
22
2
22
%RES
1
1
1
1
1
9
%*
1
1
12
33
%RES
12
12
12
14
143
%*
a
%RES END

die buchstaben A B C D sollen nur die Spalte angeben.

wie sieht dann das makro aus? es wird also nicht Spalte A sondern B durchsucht.

gruß sebal

Antwort 27 von sebal

hallo oliver,

das mit den werten in Spalte B und das anschließende durchsuchen habe ich nun selbst hin bekommen.

nun ist mein einziges problem noch das makro in mein bereits existieredes hauptprogramm zu bekommen.

gruß sebal

Antwort 28 von coros

Hallo sebal,

so, da bin ich wieder.

Warum ist das ein Problem, das Makro in Dein bestehendes Makro zu integrieren? Kopiere alles, was nach "Sub Suchen_und_kopieren()" und vor "End Sub" steht und füge das in Dein bestehendes Makro ein. Oder habe ich da etwas falsch verstanden?

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 29 von sebal

hallo oliver,

ja du hast das schon richtig verstanden, aber irgend etwas haut nicht so hin.

naja noch etwas anderes zu meinem original Makro:

die Daten auf das dein nun bestehendes u funktionierendes makro zufreifen soll, stehen im Tabellenblatt "Tabelle1", hieraus werden dann meine gewünschten werte herausgelesen ins TB "Auswertung", nun soll der min u max wert ins TB "Tabelle3" in die selben Zellen wie oben also AE696 u AE 697.
Kannst du mir dazu das makro nochmals modifizieren?

Danke
gruß sebal

Antwort 30 von sebal

hallo,

also das mit dem makor reinbringen haut doch hin,
nun stehte nur noch aus:

den minimum bzw maximum wert nicht ins aktive tabellenblatt reinzuschreiben(also da hinein wo die daten herkamen) sondern eben wie bereits erwähnt ins TB "Tabelle3".

wenn ich ganz unten deines makros anstatt:

sheets(strAktSheet)

sheets("Tabelle3")

schreibe, funktionierts nicht.

gruß sebal

Antwort 31 von sebal

hallo oliver,

mein programm sieht zur zeit so aus:


Dim iRow As Long
Dim jRow As Long
Dim strAktSheet As String
Dim iSheets As Integer
Application.ScreenUpdating = False
strAktSheet = ActiveSheet.Name

For iSheets = Worksheets.Count To 1 Step -1
If Sheets(iSheets).Name = "Auswertung" Then
Application.DisplayAlerts = False
Sheets(iSheets).Delete
Application.DisplayAlerts = False
Exit For
End If
Next
With Worksheets.Add
.Name = "Auswertung" <------------------
End With

For iRow = 1 To Sheets(strAktSheet).Range("B65536").End(xlUp).Row
If Sheets(strAktSheet).Cells(iRow, 2) = "%%RES2" Then GoTo Ende

If Sheets(strAktSheet).Cells(iRow, 2) = "%%RES1" Then
For jRow = iRow + 5 To Sheets(strAktSheet).Range("B65536").End(xlUp).Row
If Sheets(strAktSheet).Cells(jRow, 2) = "%*" Then
Sheets(strAktSheet).Range("B" & iRow + 5 & ":B" & jRow - 1).Copy
Sheets("Auswertung").Cells(Sheets("Auswertung").Range("A65536").End(xlUp).Offset(1, 0).Row, 1).PasteSpecial
Exit For
End If
Next jRow
End If
Next iRow
Ende:
Sheets(strAktSheet).Range("AE696") = Application.WorksheetFunction.Max(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row))
Sheets(strAktSheet).Range("AE697") = Application.WorksheetFunction.Min(Sheets("Auswertung").Range("A2:A" & Sheets("Auswertung").Range("A65536").End(xlUp).Row))





kmappe = ActiveWorkbook.Name
ksheet = ActiveSheet.Name

muifilename = Application.GetOpenFilename("MUI-File (*muf), *muf", 1, "please select MUI-File")
muiabb = Trim(muifilename)
If muiabb = "Falsch" Then Exit Sub




Workbooks.OpenText Filename:=muifilename, Origin:= _
xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote _
, ConsecutiveDelimiter:=True, Tab:=False, Semicolon:=False, Comma:= _
False, Space:=True, Other:=False, FieldInfo:=Array(Array(1, 1), Array(2, 1) _
, Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1))


ActiveSheet.Range("K20:AZ1200").Select
Selection.ClearContents
ActiveSheet.Range("AD140").Select
ActiveCell.Value = muifilename


kabb = 0
kspx = 0
k = 1
kcol = 2
krow = 1
kstream = 0
kvar = 0
kts = 0
lfound = False

kspalte = 30
kreihe = 145
With ActiveSheet
.Cells(krow, kcol).Select
If Cells(1, kcol) = "%%CONT" Then
Do Until lfound
krow = krow + 1
If .Cells(krow, kcol).Value = "%%RES4w" Then
krow = krow + 2
lfound = True
Exit Do
End If
If krow = 10000 Then
krow = 1
lfound = True
kabb = 1
Exit Do
End If
Loop
lfound = False
Do Until lfound
If kabb = 1 Then
lfound = True
Exit Do
End If

.Range(Cells(krow, kcol), Cells(krow, kcol + 6)).Copy
.Cells(kreihe, kspalte).Select
.Paste
krow = krow + 1
kspalte = kspalte + 6
If .Cells(krow, kcol).Value = "%parting" Then
kreihe = kreihe + 1
kspalte = 30
End If
If .Cells(krow, kcol).Value = "%%ZIG1" Then
lfound = True
Exit Do
End If
If krow = 10000 Then
krow = 1
lfound = True
Exit Do
End If
Loop
End If



End With
kmui = ActiveWorkbook.Name

Range("AD140:IG650").Select
Selection.Copy
Windows(kmappe).Activate
Sheets("Tabelle3").Activate
Range("AB140:IE650").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets(ksheet).Select
Windows(kmui).Close


Aber er sagt mir an der markierten stelle:

laufzeitfehler 1004
objekt erforderlich oder
laufzeitfehler 1004
man kann nicht den gleichen namen....

was ist da falsch? bei .Name = "Auswertung" (zeimlich weit oben)

gruß sebal

Antwort 32 von coros

Hallo sebal,

wenn Du den direkten Tabellennamen, hier also Tabelle3, angibst, sollten die Werte in die entsprechenden Zellen in Tabelle3 geschrieben werden. Entweder hast Du irgendwo einen Schreibfehler oder etwas anderes stimmt nicht. Was das sein könnte, kann ich nicht sagen, da ich Dein Makro nicht sehe.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 33 von sebal

hallo oliver,

wie? du siehst das makro nicht? habs doch reingeschrieben in AW 31.

laufzeitfehler 424, was ist da das problem?

das was ich dich ebne gefragt habe wegen tabelle3 hat sich wieder erledigt, habs anders gemacht, aber nun würde mein programm eigtl stehen, und es fkt noch nicht.

gruß sebal

Antwort 34 von coros

Hallo sebal,

ist Dir eventuell mal in den Sinn gekommen, dass sich unsere Antworten überschneiden? Deshalb hatte ich geschrieben, dass ich Dein Makro nicht sehe, da wir fast zeitgleich den Beitrag abgesetzt haben.

Warum dort ein Laufzeitfehler erscheint weiß ich nicht. Wobei ich nun nicht wirklich weiß, welcher Laufzeitfehler bei Dir auftaucht. Einmal schreibst Du Laifzeitfehler 1004, dann 424.
Ich habe mein Makroteil nochmal getetstet und er funktioniert. Der bei Dir vorhandene Makrocodse habe ich nicht getestet, da ich keine Lust habe, mir eine Datei zu erstellen, die ähnlich der Deinen ist.

Außerdem hast Du geschrieben, dass Du "strAktSheet" gegen "Tabelle3" getauscht hast. In dem von Dir aufgeführten Makro steht dort aber immer noch "strAktSheet".


MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 35 von sebal

hallo oliver,

das was du zum schluss meinst hat sich erledigt!

bei mir taucht sowohl LZF 1004 als auch LZF 424 auf.

objekt erforderlich bzw. name schon vergeben oder so ähnlich erscheint dann immer?

gruß sebal

fals du mir nicht mehr weiter helfen kannst danke ich dir bis hier her, bist echt hilfreich

Antwort 36 von coros

Hallo sebal,

der Fehler besagt eigentlich, dass eine Seite nicht den gleichen Namen erhalten darf, wie eine bereits vorhande Seite. Eigentlich dürfte bei Dir sich keine Seite mehr mit dem Namen "Auswertung" befinden, da diese durch den Codeteil

For iSheets = Worksheets.Count To 1 Step -1
If Sheets(iSheets).Name = "Auswertung" Then
Application.DisplayAlerts = False
Sheets(iSheets).Delete
Application.DisplayAlerts = False
Exit For
End If
Next


gelöscht wird. Schau doch bitte mal vor dem Ausführen nach, ob Du ein Tabellenblatt mit dem Namen "Auswertung" hast. Lösche das bitte mal und führe dann das Makro aus. Kommt dann immer noch der gleiche Fehler?
Wenn ja, kannst Du mir Deine Datei mal zusenden? Meine E-Mailadresse findest Du auf meiner HP u. a. im Impressum. Binde in der Betreffzeile irgendwie das Wort "Supportnet" und den Namen (Nickname), unter dem Du hier gepostet hast mit ein, da ich alle Mails deren Absender ich nicht kenne, ungelesen lösche.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 37 von sebal

hallo oliver,

juhu!

ich habe bevor ich deinen tipp gelesen habe, diese idee auch dehabt und habe festgestellt dass ich ein TB Auswertung hatte, nachdem ich es gelöscht hatte, hat alles funktioniert.

ich bedanke mich recht herzlich bei dir, du warst eine große hilfe.

vllt hab ich bald wieder irdendwo ein problem dann schreib ichs wieder ins forum tabellenkalkulation da bsit du ja häufig vertreten.

vielen dank, schönen tag

gruß sebal

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: