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

Fehler 1004

Fehler 1004
13.05.2013 19:21:09
TheBeginner
Hallo zusammen,
mal wieder bin es ich. Habe da ein Problem:
Wenn ich folgenden Code eingebe
Cells(1, 51).Value = "Spalte mit Maximalwert"
Set bereich = Range(Cells(2, 2), Cells(inkremente + 1, knotenanzahl + 1))
Maximum = WorksheetFunction.Max(Range(Cells(2, 2), Cells(inkremente + 1, knotenanzahl + 1)))
PosMax = WorksheetFunction.Match(Maximum, bereich, 0)
Cells(2, 51).Value = PosMax

dann kommt immer die Fehlermeldung 1004. Die Variablen "inkremente" und "knotenzahl" werden korrekt übergeben. Was mache ich falsch? Hat vielleicht jemand bitte einen Tip für mich?
Danke!!
Gruß
Richard

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Fehler 1004
13.05.2013 19:29:21
Hajo_Zi
Hallo Richard,
Bereich darf nicht über mehrere Zeilen gehen.

Was gemeint ist, ...
13.05.2013 20:27:50
Luc:-?
…Richard;
es handelt sich bei .Match um die TabBlattFkt VERGLEICH, die nur mit Vektoren (also nur mit einer Zeile oder Spalte) arbeiten kann. Will man eine mehrspalt- und -zeilige Matrix verwenden, kann man ggf mit den pro Zeile zu 1 (Text-)Wert vereinigten Spalten der Matrix und einem Suchbegriff mit Platzhaltern arbeiten. So erhält man schon mal die Zeile, in der dann direkt nach dem Begriff gesucht wdn kann. Aber, das ist eher eine Lösung für Fmln. Per VBA gehst du per Zyklus (Schleife) entweder alle Zeilen oder Spalten durch und vglst darin alle Werte über Match.
Das hättest du übrigens auch sinngemäß in der Hilfe zu VERGLEICH bzw Match nachlesen können…!
Gruß Luc :-?

Anzeige
AW: Was gemeint ist, ...
13.05.2013 20:41:21
TheBeginner
Hallo zusammen,
ist es so besser?
test_match = WorksheetFunction.Match(Maximum, Range(Cells(2, k + 1), Cells(inkremente + 1, k + 1)), 0)

Der Fehler kommt aber dennoch wieder. Die Variable "Maximum" wird korrekt übergeben.
Danke für den Hinweis. Leider stehe ich etwas unter Zeitdruck. Aber ich gelobe Besserung.
Gruß
Richard

Warum wohl? Könnte doch immerhin ...
13.05.2013 20:55:09
Luc:-?
…sein, Richard,
dass das Maximum nicht im jeweiligen Vektor zu finden ist! Dann gibt's natürlich einen FehlerWert, den man abfangen muss.
On Error Resume Next: test_match = 0
For …
test_match = WorksheetFunction.Match(Maximum, Range(Cells(2, k + 1), _
Cells(inkremente + 1, k + 1)), 0)
If CBool(test_match) Then Exit For
Next
On Error GoTo …

Luc :-?

Anzeige
Mal im Ernst, einige Fragen...
13.05.2013 22:53:02
EtoPHG
Richard,
Du bezeichnest dich als Excel Excel-Profi - VBA bescheiden
Ich vermisse den Profi, das bescheiden sei Dir verziehen ;-)
Im diesem Thread wurden Dir Angebote mit einder UDF von Klaus und ein Formelvorschlag aus excelformeln.de gemacht.
Soll das jetzt auch wieder so ein Bandwurm werden?
Du bist unter Zeitdruck: Glaubst du wirklich, dass du mit dem Vorgehen 'einfach weiter irgendwas mit VBA zusammenzubasteln und alle Vorschläge in den Wind zu schlagen', diesen Zeitdruck mindern kannst?
Hast du nicht gesagt, du müsstest das für 1500 Dateien machen? Hast du falsche Versprechungen gegenüber deinem Auftraggeber gemacht?
Zu Formellösung (Profi): Ein Leichtes wäre es doch die nächste freie Zeile im Blatt zu suchen und dort über die Zeile eine =MAX(SpalteBereichDerWerte) zu ziehen. Dann eine Zelle mit einem =MAX(überDieseZeile) und schlussendlich mit einem =VERGLEICH(Maximum;überDieseZeile) die Spalte zu finden. Du findest Tausende von Beiträge in der Forumssuche, wie man die nächste freie Zeile per VBA findet, oder wie man mit VBA Formeln in Zellen schreibt.
Zu VBA (bescheiden: Nimm Klaus' Function und verwende sie im Code deiner Sub, dann hast du mit
Sub Til()
Msgbox MaxSpalte(Range(Cells(2, 2), Cells(inkremente + 1, knotenanzahl + 1)))
End Sub
mit einer einzigen Codezeile deine gesuchte Spalte!
Zeitdruck heisst, mach langsam, es ist wichtig!
Gruess Hansueli

Anzeige
AW: Fehler 1004
14.05.2013 08:19:13
Klaus
Hallo Richard,
ich spare mir mal die Vorträge "neuer Thread geöffnet, obwohl alter Thread noch läuft" und "Selbsteinschätzung bei Levelangabe".
Du bist unter Zeitdruck, mir ist ein wenig langweilig. Darum helfe ich hier gerne!
Wenn du es schaffst, eine aussagefähige Musterdatei zu erstellen (reduziert auf dein Problem / deine Fragestellung!) dann helfe ich dir gerne, diesen Knoten zu lösen und den Code umzustricken.
Wenn du jetzt eine unkommentierte Datei mit zwei dutzend Makros und 100 Tabellenblättern hochlädst und eine Komplettlösung erwartest (leider zu oft erlebt ...) hast du dich allerdings geschnitten, das vorweg!
Grüße,
Klaus M.vdT.

Anzeige
Rückfrage zu 1500 Dateien
14.05.2013 08:24:24
Klaus
Hi Richard,
sind die Dateinamen / Pfadangaben der 1500 Dateien denn bekannt? Oder - noch einfacher - sind alle 1500 Dateien in einem einzigen Ordner, in dem KEINE unrelevante Datei ist?
Falls du eine der Fragen mit JA beantworten kannst, zeige ich dir eine Lösung die ungefähr so aussieht:
- Ausgangsworkbook HAT die Function/Formel MaxSpalte als UDF
- n = 1
- Sprungmarke:
- öffnet n-te Datei im Ordner
- benutzt MaxSpalte Function auf n-te Datei
- kopiert die entsprechende Spalte ins Masterbook
- schließt n-te Datei
- n = n + 1
- gehe zu Sprungmarke
Ich bau dir da auch gerne eine Musterlösung für 5 Dateien oder so, die einfach zu erweitern ist.
Grüße,
Klaus M.vdT.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige