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

objektbezogener Fehler

objektbezogener Fehler
14.08.2007 10:21:01
Olof
Hi,
auch dieses Anliegen war schon im Archiv verschwunden und ich konnte nicht mehr darauf antworten.
Deshalb unten angefügt die Originalbeiträge.
@Harry: Dein Vorschlag ist gut, allerdings möchte ich nicht die Funktionalität in tabelle 2 herstellen, sondern in der jeweils markierten Datei/Tabelle.
Das Makro soll also auch aus einer anderen Datei heraus gestartet werden können.
ICh habe versucht es umzuschreiben und erhalte immer die selbe Fehlermeldung wie vorher.
Hier wieder meine Beispieldatei:
https://www.herber.de/bbs/user/44937.xls
Danke für weitere Ideen!
-----------------------------------------------------------------
Hier die bisherigen Antworten:
Anwendungs- oder Objektbezogener Fehler von Olof Meise vom 09.08.2007 14:19:57
AW: Anwendungs- oder Objektbezogener Fehler - von Luschi am 10.08.2007 05:57:43
AW: Anwendungs- oder Objektbezogener Fehler - von Olof Meise am 10.08.2007 10:38:20
Hier die BEISPIELDATEI - von Olof Meise am 10.08.2007 12:08:19
AW: Hier die BEISPIELDATEI - von Coach am 11.08.2007 10:03:10
AW: Hier die BEISPIELDATEI - von Olof Meise am 13.08.2007 09:37:10
AW: Hier die BEISPIELDATEI - von Harry am 13.08.2007 23:19:06
Hallo zusammen,
die im Betreff genannte Fehlermeldung taucht immer auf wenn folgender Abschnitt meines Makros läuft.
Auf Grund meiner geringen VBA Kenntnisse habe ich diesen Abschnitt mit dem rekorder aufgezeichnet. Dabei hat auch alles funktioniert, nur halt nicht beim Makro abspielen.
Habt ihr Ideen?
.
..
...
'abhängige Gültigkeitslisten
Range("B13").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:= _
"=Bereich.Verschieben(Unterkategorie;;Vergleich(B12;Produkte;0)-1;Anzahl2(Index(Unterkategorie;;Vergleich(B12;Produkte;0)));1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
...
..
.
Die verwendeten Namen sind vergeben und ich sehe keinen Fehler. Danke für eure prüfenden Blicke.
Olof
Hallo Olof,
habe Dein Problem mal getestet und herausgefunden, daß bei Validation die Formeln in .Formula1
in amerikanischer Schreibweise gemacht werden müssen, auch wenn der Makrorekorder sie in deutsch ausgibt. In Deinem Fall wäre das:
"=OFFSET(Unterkategorie,,MATCH(Tabelle1!R[5]C[-3],Produkte,0)-1,COUNTA(INDEX(Unterkategorie,,MATCH(Tabelle1!R[5]C[-3],Produkte,0))),1)"
Wenn Du sowas häufiger machst, dann kriegst Du das ohne viel Nachdenken so raus:
1. Schmeiß den Rekorder an
2. Menüfolge: Einfügen-Namen-Definieren... oder Strg+F3
3. Name vergeben und in "Bezieht sich auf:" die gewünschte Formel
in deutsch eingeben (aber ohne die Anführungsstriche am Anfang und Ende!)
4. OK drücken
5. Recorder beenden
6. sich das gerade erzeugte Makro anschauen
7. jetzt siehst Du die gleiche Formel in der amerikanischen Schreibweise (mit Anführungsstrichen)
8. Formel in die Validation kopieren
9. den Makrorekorder mal loben (er kann, wenn er will)
10. allgemeine Freude verbreiten!
Gruß von Luschi
aus klein-Paris
Hi Luschi, der 10. TIP gefällt besonders!!! ;-)
danke für den Hinweis und den Tip bzgl. "Namen-Definieren". Ich habe deine Formel bzgl. des Tabellenblattnamens geändert und eingefügt und erhalte weiterhin den selben Fehler...
Weiterhin bin ich mir nicht ganz sicher wie sich die Zelle B12 richtig im Amerikansichen ergibt.
Über die Namen-Definieren Funktion als Makro werde ich nicht schlau, da das Erghebnis davon abhängt wo ich in welche Zelle klicke bevor ich das Makro aufnehme. Any further ideas?
Ich verzweifel wirklich an der Fehlermeldung, deshalb hier mal eine Beispieldatei mit Makro für alle die sich gerne dem Problem annehmen möchten.
Bin dankbar für jeden TIP!!!!
Manuell erstellt funktioniert alles in Tabelle1, lasse ich dann genau dasselbe in Tabelle2 als über ein Makro erstellen zerschießt es mir die abhängige Gültigkeit.
https://www.herber.de/bbs/user/44937.xls
Olof
Hallo Olof,
Gültigkeiten funktionieren nur mit lokalen Namen der jeweiligen Tabelle, also:
ActiveWorkbook.Names.Add Name:=ActiveSheet.Name & "!Produkte", RefersToR1C1:="=Tabelle1!R1C7:R1C9"
Range("G2:I4").Select
ActiveWorkbook.Names.Add Name:=ActiveSheet.Name & "!Unterkategorie", RefersToR1C1:="=Tabelle1!R2C7:R4C9"
dann:
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=OFFSET(Unterkategorie,,MATCH(B12,Produkte,0)-1,COUNTA(INDEX(Unterkategorie,,MATCH(B12,Produkte,0))),1)"
Gruß Coach
Hallo Coach,
danke für deine Erklärungen. Ich habe das Makro mit meinen wenigen Kenntnissen versucht umzuschreiben.
Hier das Ergebnis:
https://www.herber.de/bbs/user/44989.xls
Das Resultat bleibt genau dasselbe....., was mache ich falsch?
-DANKE
Hallo Olof,
verstehe ich dass richtig, du möchtest per Makro die Funktionalität von Tabelle 1 auch in Tabelle 2 herstellen?
Dann
Option Explicit

Sub bedingte_Gueltigkeit()
Dim i As Integer
'Löschen bisheriger Namen in der Mappe, da evtl. schon auf anderem Tabellenblatt
MsgBox ("Names: " & ActiveWorkbook.Names.Count)
If ActiveWorkbook.Names.Count > 0 Then
For i = 1 To ActiveWorkbook.Names.Count
ActiveWorkbook.Names.Item(1).Delete
Next
End If
MsgBox ("Names: " & ActiveWorkbook.Names.Count)
'Tabellenname anpassen
With Sheets("Tabelle2")
'Stammdaten schreiben
.Range("B12") = "1"
.Range("G1") = "1"
.Range("H1") = "2"
.Range("I1") = "3"
.Range("G2") = "a"
.Range("G3") = "a"
.Range("G3") = "aa"
.Range("G4") = "aaa"
.Range("H2") = "b"
.Range("H3") = "bb"
.Range("H4") = "cc"
.Range("I2") = "d"
.Range("I3") = "dd"
.Range("I4") = "ddd"
.Range("H4") = "bbb"
'Namen deklarieren, evtl. hier auch abweichende Namen von Tabelle 1, dann kann die Lö _
schroutine am Anfang der 

Sub entfallen
.Names.Add Name:="Produkte", RefersTo:="=Tabelle2!$G$1:$I$1"
.Names.Add Name:="Unterkategorie", RefersTo:="=Tabelle2!$G$2:$I$4"
End With
'Gültigkeit eintragen
With Sheets("Tabelle2").Range("B13").Validation
.Delete
'hier die gleichen Namen wie weiter oben verwenden
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:= _
"=offset(Unterkategorie,,match($B$12,Produkte,0)-1,counta(INDEX(Unterkategorie,,match($B$12, _
_
Produkte,0))),1)"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub


Gruß
Harry

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Wer soll sich mit was befassen? owT
14.08.2007 10:24:00
Renee

AW: ....
14.08.2007 10:35:00
Olof
Das Problem steht doch in der Beispieldatei.
Und der letzte Eintrag von Harry ist der aktuellste Lösungsvorschlag.
In Tabelle 1 habe ich eine abhängige Gültigkeitsliste hergestellt und alles per Makro mit dem Rekorder aufgezeichnet.
Sobald ich versuche das Makro z.B. in Tabelle 2 ablaufen zu lassen, kommt die Meldung "anwendungs. oder objektbezogener Fehler".
Harrys letztes Beispiel löst das Problem der amerikanischen Schreibweise, allerdings wird die Liste nun immer in Tabell 2 hergestellt. Ich möchte allerdings, dass sich alles auf das aktuelle Tabellenblatt bezieht. Hierbei erhalte ich aber immer wieder die selbe Fehlermeldung....

Anzeige
AW: objektbezogener Fehler
14.08.2007 11:25:00
Harry
Hallo Olof (aka "Mann-o-Mann, teste und modifiziere doch erst mal")
1) teste das Makro in einer neuen Tabelle und sage, ob es inhaltlich so funktioniert, wie du es möchtest
2) in dem Makro sind 4 Stellen, wo auf Tabelle 2 Bezug genommen wird - diese könne doch leicht angepasst werden, du musst doch nur sagen wie
a) die Funktionalität sol in ein bestimmtes (evtl. neu erstelltes) Blatt integriert werden oder
b) es soll im aktivesheet passieren
daraus folgt: es sind dann die beiden with- und names.add-Anweisungen dynamisch zu gestalten und evtl auch die Bereichsnamen
Wobei, hab mich mal für 2b) entschieden und angepasst und hochgeladen https://www.herber.de/bbs/user/45048.xls (es werden Bereichsnamen im Stil "Tabellenname+Produkte" definiert, am Anfang wird geprüft, ob die Bereichsnamen bereits exisitieren, wenn ja, then exit sub)
Gruß
Harry
PS: Hausaufgabe für dich
Nr. 1 ausführlicher Test
Nr. 2 vergleiche beide Makros, verstehe die Unterschiede und versuche das bei Folgeproblemen analog anzuwenden ;-)

Anzeige
AW: objektbezogener Fehler
14.08.2007 18:24:00
Olof
danke für deine Geduld, Harry!
Habe meine Hausaufgaben gemacht...., denn dein Makro funktionierte zwar wunderbar in meiner Testdatei, jedoch nicht im Original.....
Nach ausführlicher Fehlersuche, folgendes Ergebnis:
Beim Erstellen der abhängigen Gültigkeitsliste habe ich eine Warnung erhalten falls noch kein Wert in der Bezugspalte eingetragen war.
Mit einem "OK" war die Sache dann erledigt.
Beim Abspielen des Makros kam lediglich die bekannte Fehlermeldung "objektbezogener Fehler". Erst als ich eingefügt habe, dass in der Bezugsspalte für die abhängige Gültigkeit ein gültiger Wert auftaucht lief das Makro. Den Wert konnte ich danach ja wieder löschen. Sehr strange....., aber egal denn jetzt funktioniert ja alles.
Vielen Dank nochmal---

Anzeige
AW: objektbezogener Fehler
14.08.2007 18:30:57
Harry
kann das zwar nicht nachvollziehen, aber passt scho, wenn's passt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige