Run-time error '1004': Application-defined obje

Hallo,

ich bekomme die Fehlermeldung auf meinen Code den ihr unten seht.
Ich moechte auf eine Auswahl hin in eine Drop-Down Feld (mit Steuerelemente Toolbox erstellt) aus einem anderen Worksheet 3 Zellen kopieren und ins aktuelle Worksheet einfuegen.
Ich nehme an es liegt an der Copy-Funktion, da es beim debuggen immer in der Zeile:

Range("E21:G21").Select

stehenbleibt.

Ich bin absoluter anfaenger und kopier mir meine Codes nur so zusammen :oops: leider kenne ich niemanden der es mir erklaeren koennte, deswegen seid ihr meine letzte Hoffnung nachdem ich schon stundenlang nach Loesungen suche.

Waere auch einer ganz anderen Variante nicht abgeneigt, z.B. Drop-down aus Gueltigkeit, nur hat das auch Probleme gemacht bisher.

Vielen Dank also fuer eure Hilfe

Antonia

Option Explicit

Private Sub CobCR\_Change()
 Select Case CobCr.Value
 Case "Yes"
 Call CR

 Case Else
 Exit Sub
 End Select
End Sub
Sub CR()

 Sheets("Layout").Select
 Range("E21:G21").Select
 Selection.Copy
 Sheets("Template").Select
 Range("E21:G21").Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks \_
 :=False, Transpose:=False
End Sub

Hallo Antonia,
ich habe den Code ausprobiert, bei mir funktioniert er.
Hast du vielleicht nen Blattschutz auf einer der Tabellen?

Hallo antonia_ri,
der Fehler liegt nicht beim Kopieren, sondern beim Selektieren des Bereiches, wo die kopierten Daten per „Paste“ eingefügt werden sollen.
Also unter der Zeile:

steht dann:
Range(„E21“).Select
ActiveSheet.Paste
statt:

mfg
Softoldi

Hallo,

für so eine Sache würde ich das Makro einfach aufzeichnen, dann funktioniert es ersteinmal, dann kann man es verallgemeinern,

Gruß

Hallo Antonia,

es tut mir leid, aber bei mir läuft dein Code fehlerfrei durch - wie nicht anders zu erwarten, da er ja fehlerfrei ist.
Der Fehler steckt also wohl außerhalb des Codes.
Wenn dir auch sonst keiner eine hilfreiche Antwort geben kann, kannst du mir gerne die vollständige Datei zusenden - dann müsste ich den Fehler eigentlich finden können.
([email protected])

Gruß
Peter

Hallo Antonia,

Ich moechte auf eine Auswahl hin in eine Drop-Down-Feld (mit Steuerelemente Toolbox erstellt) aus einem anderen Worksheet 3 Zellen kopieren und ins aktuelle Worksheet einfuegen.
Ich nehme an es liegt an der Copy-Funktion, da es beim debuggen immer in der Zeile

Range(„E21:G21“).Select

stehenbleibt.

Ohne es genau zu wissen, nehme ich an, daß es ausreicht, die erste Zelle für die Einfügung zu markieruen:

...
 Sheets("Template").Select
 Range(" **<u>E21</u>**").Select
 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, \_
 SkipBlanks :=False, Transpose:=False
End Sub

Es kann natürlich auch sein, daß das Worksheet Template nicht existiert oder daß es ausgeblendet ist oder daß darin die Scrollarea limitiert ist oder…

HTH.

Markus

Hallo antonia_ri,

ich habe das ganze nachgestellt und bei mir kommt ebfalls dieser Fehler. Allerdings konnte ich ihn auch nicht beseitigen, kann dir also leider nicht weiter helfen. Sorry…

Viele Grüße
Philipp

Sorry, die späte Antwort resultiert aus meiner doch vorrangigen Berufstätigkeit!

Und nochmals Entschuldigung: Ich kann dir leider nicht weiterhelfen. Ich bin lediglich zu der Erkenntnis gekommen, dass die Routine „CR()“ für sich genommen einwandfrei funktioniert. Ich erhalte dann keine Fehlermeldung.

Aber die aufrufende Routine „cobCR_Change()“ erzeugt einen Fehler, da „cobCR“ nicht als Objekt erkannt wird, obwohl ich das Kombobox-Steuerelement genau so benannt habe. Stutzig wurde ich bereits beim Eingeben des Quelltextes, als mir nach dem Punkt hinter „cobCR“ keine Auswahl mit Eigenschaften zur Verfügung gestellt wurde. Hier hätte nämlich ein Dropdown aufgehen müssen, dem ich „Value“ hätte entnehmen können.

Mehrere Versuche, mit anderen Bezeichnern, brachten keine Änderung.

Ich kann nur hoffen, dass ein anderer Forumsteilnehmer sich als Experte erweist und dir die gewünschte Antwort geben kann (an der auch ich jetzt sehr interessiert bin).

Einen schönen Abend trotzdem und Grüße aus dem Münsterland

peter1952

Hallo antonia_ri!

Erlaube mir bitte einen Nachtrag zur Antwort von vorhin.

Ich habe das Ganze noch einmal durchprobiert, nur habe ich diesmal kein Kombinationsfeld aus dem oberen Teil der Toolbox („Formularsteuerelement“) genommen, sondern die aus dem Abschnitt „ActiveX-Steuerelement“.

Nun funktioniert das Ganze. Eine Erklärung habe ich momentan nicht dafür.

Gruß

peter1952

Hallo,

tja, ich muss leider sagen das ich nicht so der wirkliche Excel-Experte bin, denn ich fasse Excel nur unter Androhung koerperlicher Gewalt an.

Aber mit meinem eingeschraenkten Wissen wuerde ich mal sagen das in der Zeile „Range(„E21:G21“).Select“, der Bezug auf das sheet fehlt, wahrscheinlich muesste es heissen Sheets(„Layout“).Range(„E21:G21“).Select.

Kann es aber z.Z. nicht ausprobieren, das Excel auf meinem Rechern nicht laeuft.

btw. Um sich das Leben einfacher zu machen, sollte man die Objekte, die man benutzt Varibalen zuweisen. Das macht den Code einfacher zu lesen, reduziert Tipfehler und ist hilfreich beim Debuggen.

Ist in deinem Fall vieleicht nicht so einsichtig, aber wenn der Code komplizierter wird, ist es sinnvoll.
z.B.

Dim layoutSheet as Sheet

layoutSheet = Sheets(„Layout“)
.
.
layoutSheet.Range(„E21:G21“)

Sorry, das ich nicht wirklich helfen konnte, mein Bereich ist eher in Access-VBA und VB.

Tschau
Peter

Hallo Peter,

danke fuer das angebot,
so viele antworten aber das Problem besteht weiterhin.
ich schicke dir die Datei zu und wenn wir eine Loesung finden, werde ich das auch posten. Ich hoffe das doch sehr, da es ja nicht so ein seltener Fall ist, vermute ich.

Ich nehme an ich habe den Code einfach an der falschen Stelle stehen:frowning:

Schauen wir mal was du findest.

No worries, ich bin in shanghai, deswegen ergibt sich eine kleine Zeitverschiebung von 7 Stunden. Wuerde mich aber ueber eine rasche Antwort trotzdem freuen.

Danke fuer die zahlreichen Versuche.
Es hat noch nichts funktioniert. Ich versteh es nicht.
Wenn Peter was rausfindet wirds gepostet, wenn nicht, wuerde noch jemand anderes mal drueber schauen koennen?

Lg, Antonia (Shanghai)

Thank you Peter.
amazing.
das war der eigentliche Fehler.
ich glaubs ja nicht.
so einfach.
Ok, nochmal vielen dank.

Lg, Antonia

Hallo,

leider kann ich den Fehler nicht nachvollziehen, da der Code bei mir einwandfrei funktioniert.

Leider ist die Fehlermeldung oben nicht vollständig. Aber 1004 deutet in der Regel darauf hin, dass etwas nicht gefunden wird!? Gibt es also die angegebenen Tabellenblätter in der Datei? Liegt evtl. ein Schreibfehler im Namen vor?

Gruß
Natator

Hallo antonia_ri,

sorry, aber hierzu fällt mir leider nichts ein.
Meine Kenntnisse in VBA beziehen sich in erster Linie auf Access, dass hier sieht mir nach Excel aus.
BTW: was hast Du genau vor?

Hallo antonia_ri,

Ich denke eher, der Fehler liegt hier:
Select Case CobCR.Value
Case „Yes“

Du unterscheidest nach CobCR.Value, was i. d. R. einen Long-Datentyp entspricht (also eine Zahl ist). Case „Yes“ will aber Buchstaben.
Versuche es mal mit Select case CobCR.Text bzw. nur mit
Select case CoBCR.

Falls es immer noch nicht geht, bitte die Excel-Datei posten, dann tue ich mich leichter.

Gruß
Harry

Hi

versuche mal statt

Sheets(„Layout“).Select
Range(„E21:G21“).Select
Selection.Copy

einfach

Range(„Layout!E21:G21“).Copy

))

sry, aber da kann ich dir leider nicht helfen.

Hallo!
Ich hab mir mal die mühe gemacht, das zu kopieren und zu testen. Also:

  1. Wenn Du „option explicit“ hast, mußt Du alle variablen definieren !!!
  2. Da ich nicht weiß, was „CobCr“ ist, habe ich die Case-Auswahl übersprungen.
  3. Wenn ich dann die Blätter „Layout“ und „Template“ in meinem workbook definiert habe, funktioniert es einwandfrei:

Mein Tip:

  1. Arbeite mal die Tutorials von VBA durch
  2. Wenn Du einen Befehl nicht GENAU (!!) kennst, dann lies die Hilfe dazu durch, bis du wirklich Bescheid weißt.

Einfach nur dinge zusammenkopieren, die du nicht verstehst, wird Dir nir gute Ergebnisse liefern.

Gruß
Wolfram