Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
376to380
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
376to380
376to380
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Was stimmt mit diesem Quellcode nicht?!

Was stimmt mit diesem Quellcode nicht?!
09.02.2004 09:40:38
Daniel
Hallo zusammen!
Wer von euch Profis kann mir verraten, was mit diesem Quellcode nicht stimmt und Excel dazu veranlasst, mit einen Laufzeitfehler-Code 13 auszugeben?!

Sub Makrotest()
' Makrotest Makro
' Makro am 06.02.2004 von Daniel aufgezeichnet
For Each Zelle In Range("A6301:A10000")
If Zelle = [J3601] Then
Zelle.Offset(0, 3).Copy Worksheets("Bericht").[A65536]. _
End(xlUp).Offset(1, 0) '
End Sub

(Ziel ist es, ein Blatt nach dem in der Zelle J3601 vorkommenden Wert zu scannen und zwar so lange, bis Excel alle Werte gefunden und in ein anderes Blatt kopiert hat.)

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Was stimmt mit diesem Quellcode nicht?!
09.02.2004 09:50:42
Heinz A. Wankmüller
Hallo,
so z.B.

Sub Makrotest()
Dim zelle As Range
For Each zelle In Range("A1:A10")
If zelle = [J3] Then
zelle.Offset(0, 3).Copy Worksheets("Bericht").[A65536].End(xlUp).Offset(1, 0)
End If
Next zelle
End Sub

es fehlte End If und Next zelle
Gruß
Heinz
Immer noch Fehlermeldung
09.02.2004 09:55:59
Daniel
Hi!
Schon mal DANKESCHÖN aber es bleibt ein Problem:
Fehler-Meldung: Typen unverträglich bei :"If zelle = [J3]('bzw. [J3601]') Then"
Gruß Daniel
AW: Immer noch Fehlermeldung
09.02.2004 10:01:35
Jens
Hi
Versuch mal die Range angaben auszuschreiben.

Sub Makrotest()
Dim zelle As Range
For Each zelle In Range("A1:A10")
If zelle = Range("J3") Then
zelle.Offset(0, 3).Copy Worksheets("Bericht").Range("A65536").End(xlUp).Offset(1, 0)
End If
Next zelle
End Sub

Ich hab schon beobachtet das es mit der Abkürzung [A1] zum Teil Probleme gibt.
Gruß Jens
Anzeige
Danke - habs rausgefunden!
09.02.2004 10:05:15
Daniel
Die Range ist nur bis 9999 kompatibel - der Fehler tritt erst ab 10000 auf! Komisch aber wahr! In jedem Fall DANKE für eure Hilfe!!!
Gruß
Daniel
AW: Immer noch Fehlermeldung
09.02.2004 10:02:28
Heinz A. Wankmüller
Hallo Daniel,
dann kann es nur mit den Inhalten im angegebenen Bereich bzw. mit dem in der Zelle J3601 zu tun haben. Was steht denn da drin? Vielleicht eine Fehlermeldung?
In meinem Test stehen überall Zahlen und Texte und es funktioniert!
Gruß
Heinz
Noch eine letzte Frage
09.02.2004 10:09:49
Daniel
Hallo Heinz!
Das Makro läuft nun - es kopiert aber die Werte nicht! Wo sehe ich eigentlich an der Formel, wohin die gefundenen Werte in das Bericht-Blatt kopiert werden?
Das Ziel ist es ja eigentlich nur nach allen Werten zu suchen und diese in das Bericht-Blatt zu kopieren und zwar wirklich so lange, bis alle Werte erfasst worden sind!
Dankeschön für die Hilfe!!!
Gruß Daniel
Anzeige
AW: Was stimmt mit diesem Quellcode nicht?!
09.02.2004 10:26:10
AndreasS
Morgen,
ich glaube, das ist das, was du willst:

Sub Übertragen()
Application.ScreenUpdating = False
Dim rngFind As Range
Dim strFind As String
Dim iRow As Integer
Set rngFind = Cells.Find(what:=Range("J3601").Value, after:=ActiveCell, LookIn:=xlValues, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFind Is Nothing Then
firstaddress = rngFind.Address
Do
Set rngFind = Cells.FindNext(rngFind)
If rngFind Is Nothing Then
MsgBox "Daten wurden nicht gefunden!"
Exit Sub
End If
rngFind.Select
With Worksheets("Bericht")
ActiveCell.Copy Worksheets("Bericht").[A65536].End(xlUp).Offset(1, 0)
End With
Loop While Not rngFind Is Nothing And rngFind.Address <> firstaddress
End If
Worksheets("Bericht").Activate
Application.ScreenUpdating = True
End Sub

Gruß Andreas
Anzeige
Wow - prima! Klappt bis auf eins:
09.02.2004 10:35:48
Daniel
Hi Andreas!
Erst einmal herzlichen Dank für deine Mühe!!! Das näcshte Mal, wenn du mir in Aachen über den WEg läufst, geb ich dir ein Bier aus ;)!
Noch eine kleine Frage: Wie sag ich deinem Makro jetzt, dass wenn er den Wert gefunden hat, er mir die Zahl zwei (!) Spalten weiter rechts kopieren soll?!
Gruß Daniel
AW: Wow - prima! Klappt bis auf eins:
09.02.2004 10:41:54
AndreasS
Hallo,
ActiveCell.Copy Worksheets("Tabelle2").[c65536].End(xlUp).Offset(1, 0)
...komme noch auf deinen Vorschlag zurück!
Gruß Andreas
Hehe ... FAST!
09.02.2004 10:51:08
Daniel
Sorry - aber ich glaub' wir haben da ein kleines bißchen aneinander vorbei geredet ;)!
Er soll nicht den Datenextrakt in die 3. Spalte des anderen Blattes kopieren. Vielmehr ist dies seine Aufgabe: Er findet den in der J Zeile beschriebenen Wert. Jetzt soll er mir im gleichen Blatt, in der gleichen Zeile den Wert zwei Spalten weiter rechts in das andere Blatt (meinetwagen in die a oder c spalte - ist egal!) kopieren!
Danke und Gruß
Daniel
Anzeige
AW: Hehe ... FAST!
09.02.2004 10:56:02
AndreasS
Hi,
jetzt aber:
Set rngFind = Cells.Find(what:=Range("J3601").Offset(0, 2).Value, after:=ActiveCell, LookIn:=xlValues, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
Gruß
Andreas
Tja
09.02.2004 11:11:31
Daniel
Also, in jedem Fall gibt er mir jetzt keine Fehler-Meldung ...
Aber jedes Mal, wenn ich das Makro jetzt ausführe, reagiert Excel nicht mehr und ich kann es nur noch über den Task-Manager schließen!!!
Ich poste hier nochmal meine 'gesammelten Werke':

Sub Übertragen()
Application.ScreenUpdating = False
Dim rngFind As Range
Dim strFind As String
Dim iRow As Integer
Set rngFind = Cells.Find(what:=Range("J6301").Offset(0, 2).Value, after:=ActiveCell, LookIn:=xlValues, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFind Is Nothing Then
firstaddress = rngFind.Address
Do
Set rngFind = Cells.FindNext(rngFind)
If rngFind Is Nothing Then
MsgBox "Daten wurden nicht gefunden!"
Exit Sub
End If
rngFind.Select
With Worksheets("Bericht")
ActiveCell.Copy Worksheets("Bericht").[A65536].End(xlUp).Offset(1, 0)
End With
Loop While Not rngFind Is Nothing And rngFind.Address <> firstaddress
End If
Worksheets("Bericht").Activate
Application.ScreenUpdating = True
End Sub


(das kann doch keine 10 Minuten dauern, dieses Makro durchlaufen zu lassen - oder?!)
Anzeige
AW: Ich habe die Datei mal hochgeladen!!!
09.02.2004 11:36:13
AndreasS
Hallo,
nach was soll in Spalte A gesucht werden? Zellinhalt: Range("J6301")? Oder ein Wert?
Spalte A wäre ja dann Range("A6301")...
Gruß Andreas
Spalte A
09.02.2004 11:38:25
Daniel
Hi!
Das was in der Zelle J6301 steht, ist der Wert, nach dem in der Spalte A gesucht werden soll!
Gruß Daniel
AW: Spalte A
09.02.2004 11:42:04
AndreasS
Hallo,
ich glaub, ich habs kapiert:

Sub Übertragen()
Application.ScreenUpdating = False
Dim rngFind As Range
Dim strFind As String
Dim iRow As Integer
Set rngFind = Cells.Find(what:=Range("J6301").Value, after:=ActiveCell, LookIn:=xlValues, lookat:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If Not rngFind Is Nothing Then
firstaddress = rngFind.Address
Do
Set rngFind = Cells.FindNext(rngFind)
If rngFind Is Nothing Then
MsgBox "Daten wurden nicht gefunden!"
Exit Sub
End If
rngFind.Select
With Worksheets("Bericht")
ActiveCell.Offset(0, 2).Copy Worksheets("Bericht").[A65536].End(xlUp).Offset(1, 0)
End With
Loop While Not rngFind Is Nothing And rngFind.Address <> firstaddress
End If
Worksheets("Bericht").Activate
Application.ScreenUpdating = True
End Sub

Gruß Andreas
Anzeige
DU BIST DER GRÖSSTE!!! HERZLICHEN DANK!!!!!! o.T.
09.02.2004 11:45:47
Daniel
.
Bitte! Danke für die Rückmeldung! o.T.
09.02.2004 11:51:38
AndreasS

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige