Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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

Anwendungs- oder objektdefinierter Fehler

Anwendungs- oder objektdefinierter Fehler
08.02.2016 16:48:11
Ulrich
Hallo zusammen!
Was ist an diesem Makro falsch.
Bekomme Fehlermeldung "Anwendungs- oder objektdefinierter Fehler".
Private Sub suchen_Max_Click()
Dim Spalte As Integer
Dim Bereich As Range
Spalte = Range("A2").Value
Set Bereich = Range(Spalte, "7:100")
Bereich.Find(Application.Max(Bereich)).Select
End Sub

mfg Ulrich

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 17:21:40
Michael
Hallo Ulrich!
Ich nehme an Du willst die Zelle mit dem höchsten Wert einer Spalte ansteuern, wobei die durchsuchte Spalte in A2 angegeben wird und innerhalb der Zeilen (!) 7:100 gesucht wird?
Dann zB so:

Sub a()
Dim Spalte As Long
Dim Bereich As Range
With ActiveSheet
Spalte = .Range("A2").Value
Set Bereich = .Range(.Cells(7, Spalte), .Cells(31, Spalte))
Bereich.Find(WorksheetFunction.Max(Bereich)).Select
End With
End Sub
Bei Range-Angabe (auch Cells) immer zuerst Zeilen, dann Spalten Angeben - bei Dir ist das schon mal verdreht Range(Spalte, "7:100"), abgesehen davon, dass das mit der Zeilenangabe sowieso so nicht klappen würde.
Kommst Du damit zurecht?
LG
Michael

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 17:48:50
Ulrich
Hallo Michael!
Vielen Dank für deine schnelle Hilfe.
In ("A2") steht die Spaltenzahl drin. In diesem Fall 3 für Spalte C. Es funktioniert.
Trage ich in ("A2") die 4 ein, für Spalte D dann funktioniert es nicht mehr.
Woran liegt das?
mfg Ulrich

AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 17:58:36
Michael
Hallo!
Kann ich nicht nachvollziehen. Aber beachte - in meinem Code hab ich nur bis Zeile 31 gesucht, weil ich nicht soviele Testdaten eingetragen habe.
D.h. Du müsstest diese Zeile anpassen
Set Bereich = .Range(.Cells(7, Spalte), .Cells(31, Spalte))
auf
Set Bereich = .Range(.Cells(7, Spalte), .Cells(100, Spalte))
Passt?
LG
Michael

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 18:24:12
Ulrich
Hallo Michael!
Danke für den Hinweis. Das habe ich verstanden.
Doch ich denke das Problem liegt woanders. Schau mal bei Daniel.
Ulrich

AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 17:26:05
Daniel
Hi
eine Bitte, wenn du einen Fehler bekommst, dann gib bitte auch die Zeile an, in der der Fehler auftritt.
Das vereinfacht uns die Fehlersuche, weil wir dann gleich wissen, wo wir schauen müssen.
also der Fehler wird wahrscheinlich in der Zeile Set Bereich = ... auftreten, weil dein Range-Definition hier Unsinn ist.
Vermutlich willst den Bereich auf die in A2 stehende Spalte von Zeile 7 bis Zeile 100 setzen (aber warum muss ich das vermuten, wenn du mir auch sagen könntest, was du mit diesem Makro erreichen willst?)
das geht geht so:
Set Bereich = Range(Cells(7, Spalte), Cells(100, Spalte))
oder so
Set Bereich = Intersect(Columns(Spalte), Range("7:100"))
oder so
Set Bereich = Cells(7, Spalte).Resize(94, 1)
Gruß Daniel

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 18:18:55
Ulrich
Hallo Daniel!
Das verstehe ich nun überhaupt nicht:
In A2 und A3 stehen die Spalten-Nummern. Trage ich in A2 und A3 die Spalten-Nr. 3 ein, funktionieren beide Makros.
Trage ich in A2 und A3 die Spalten-Nr. 4 ein, funktioniert nur Min.
Max gibt Fehlermeldung in der letzten Zeile "Bereich.Find ...".
Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"
Sub suchen_Max_Click()
Dim Spalte As Long
Dim Bereich As Range
With ActiveSheet
Spalte = .Range("A2").Value
Set Bereich = .Range(.Cells(7, Spalte), .Cells(31, Spalte))
Bereich.Find(WorksheetFunction.Max(Bereich)).Select
End With
End Sub
Sub suchen_Min_Click()
Dim Spalte As Long
Dim Bereich As Range
With ActiveSheet
Spalte = .Range("A3").Value
Set Bereich = .Range(.Cells(7, Spalte), .Cells(31, Spalte))
Bereich.Find(WorksheetFunction.Min(Bereich)).Select
End With
End Sub

mfg Ulrich

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler
08.02.2016 18:41:23
Daniel
Hi
wie gesagt, ohne Beispieldatei nicht nachvollziehbar.
probier mal alternativ das hier für Max (für min dann analog):
Dim Spalte As Long
Dim Bereich As Range
With ActiveSheet
Spalte = .Range("A2").Value
Set Bereich = .Range(.Cells(7, Spalte), .Cells(100, Spalte))
End With
With WorksheetFunction
Bereich.Cells(.Match(.Max(Bereich), Bereich, 0), 1).Select
End With
Bei Zahlenwerten ist das Worksheetfunction.Match zum Ermitteln der relativen Zeilennummer manchmal zuverlässiger als das .Find
btw, wieseo durchsuchst du plötzlich nur bis Zeile 31 und nicht mehr bis Zeile 100 wie vorher?
Hat sich deine Datei in der Zwischenzeit geändert?
gruß Daniel

Anzeige
AW: Anwendungs- oder objektdefinierter Fehler (erl
08.02.2016 18:56:46
Ulrich
Mensch Daniel!
Jetzt funktioniert es.
Das war es gewesen.
Vielen Dank für eure promte Hilfe.
mfg Ulrich

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige