Kopieren und Einfügen
#1
Morgen,

ich wollte heute an meinem freien Tag einfach ein bisschen mit VBA rumspielen, aber leider kriege ich die Aufgabe nicht hin.
Habe 2 Ordner, wenn ich bei Ordner 1 mit dem Dropdown Ja anklicke, soll von Ordner 2 deren (gebrauchtes) Werkzeug im Ordner 1 angezeigt werden.
Bei mir ist jetzt das Problem, dass mir nur das erste angezeigt wird, obwohl dort nein steht und bei den anderen ja.
(können auch SVerweise mit rüber kopiert werden? Bei mir steht da #NV)

Der bisherige Code:

Sub Anzeigen()

If Cells (13, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B3:C8").Copy Destination:=Worksheets("Motor").Range("T12:J17")

ElseIf Cells (14, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B11:C18").Copy Destination:=Worksheets("Kabelbaum").Range("K12:L18")

ElseIf Cells (15, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B21:C28").Copy Destination:=Worksheets("Interior").Range("M12:N19")


ElseIf Cells (16, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B30:C37").Copy Destination:=Worksheets("Exterior").Range("O12:P19")


EndIf

End Sub

Vielen Dank schon mal für eure Hilfe
Gruß EcelVBAAnfänger
Top
#2
Habe es jetzt mal weiter ausgeführt, aber leider immer noch das selbe Ergebnis. Kann mir bitte einer helfen?



Sub Anzeigen()

If Cells (13, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B3:C8").Copy_ Destination:=Worksheets("Motor").Range("T12:J17")

ElseIf Cells(13, 3).Value = Nein Then
Worksheet("Motor").("T12:J17").Clear


ElseIf Cells (14, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B11:C18").Copy_ Destination:=Worksheets("Motor").Range("K12:L18")

ElseIf Cells(14, 3).Value = Nein Then
Worksheet("Motor").("K12:L18").Clear



ElseIf Cells (15, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B21:C28").Copy_ Destination:=Worksheets("Motor").Range("M12:N19")


ElseIf Cells(15, 3).Value = Nein Then
Worksheet("Motor").("M12:N19").Clear


ElseIf Cells (16, 3).Value = Ja Then
Worksheets("Werkzeug").Range("B30:C37").Copy_ Destination:=Worksheets("Motor").Range("O12:P19")


ElseIf Cells(16, 3).Value = Nein Then
Worksheet("Motor").("O12:P19").Clear



EndIf

End Sub
Top
#3
Hallo,

ohne weiter geprüft zu haben, muss erst mal sie Abfrage In Anführung geschrieben werden.
 Also so

If Cells (13, 3).Value = "Ja" Then
usw.

Ansonsten bitte Tabellenaufbau als Datei.

Gruß Rudi
Top
#4
Hi Sorry, war falsch hier
Top
#5
Hi Daniel456,

hä? hättest auch einfach den Eintrag löschen können...

Aber nun gut.

Hi Rudi´s,

stimmt das habe ich vergessen, aber leider hat das auch nicht aus gereicht.
Hab mal die Datei dran gehangen.

Danke schon mal im Voraus.
Gruß ExcelVBAAfänger


Angehängte Dateien
.xlsm   ExcelVBAAnfänger.xlsm (Größe: 20,16 KB / Downloads: 3)
Top
#6
Hi ExcelVBAAfänger

Du schreibst:
Zitat:ich wollte heute an meinem freien Tag einfach ein bisschen mit VBA rumspielen, aber leider kriege ich die Aufgabe nicht hin.
Lass es besser bleiben. VBA macht süchtig und verändert Dein Leben. Leicht kann "ein bisschen mit VBA rumspielen" mit überraschenden Sonnenaufgängen enden, weil es einen nicht mehr los lässt. Noch kannst Du wählen. (Es gibt Opfer, die Dunkelziffer ist ... )

Du schreibst
Zitat:Habe 2 Ordner
Meinst Du Blätter bzw. Tabellenblätter (engl. Worksheets)?

Du schreibst
Zitat:hä? hättest auch einfach den Eintrag löschen können...
Ich glaube, das geht nicht. Und dass deshalb Daniel seinen Text ersetzt hat, damit nicht nichts drinnen steht. Aber ich könnte mich auch irren. Du weisst ja, wovon Du sprichst.

Du schreibst
Zitat:Danke schon mal im Voraus.
Leute, die Dir helfen wollen, schätzen es, wenn sich der Geholfene nach erfolgreicher Hilfeleistung bedankt und nicht im Voraus. So praktisch es für Dich auch sein mag, wenn Du den Dank schon vorweggenommen hast. 

Deine Makrozeile
Code:
Worksheets("Zutaten").Range("B11:C18").Copy_ Destination:=Worksheets("Obst").Range("K12:L19")
hat nach dem Copy einen Unterstrich, der hier nicht hergehört. Also
Code:
Worksheets("Zutaten").Range("B11:C18").Copy Destination:=Worksheets("Obst").Range("K12:L19")

Zur Info: Dein Makro hat eine IF-Anweisung mir vielen ELSEIF
ELSEIF heisst "sonst, dann wenn" und es folgt eine Bedingung, usw.
Wenn eine IF-Bedinung erfüllt ist, geht es im Code weiter bis vor dem ELSEIF, dann geht es nach END IF und nicht bei ELSEIF weiter.

Deine Codezeilen
Code:
Worksheets("Zutaten").Activate
Worksheets("Obst").Activate
und alle, die mit ".Activate" enden, kannst Du in der Regel löschen, da sie nichts zum Programmablauf beitragen, ausser dass sie die Ablaufdauer verlängern. Zum Bearbeiten einer Zelle muss man nicht das Blatt aktivieren. Es geht auch so.

Grus Rauol.

Ach ja: Bitte gerne. Tschüss
Top
#7
Hallo,

so sollte dein Aufbau funktionieren.

Raoul hat es ja schon ganz gut beschrieben.

Gruß Rudi


Angehängte Dateien
.xlsm   ExcelVBAAnfänger.xlsm (Größe: 23,42 KB / Downloads: 4)
Top
#8
Vielen Dank Euch allen,

habe es gestern doch noch geschafft es selbst zu lösen.
Wahrscheinlich für Excel VBA Profis zum heulen, aber ich habe nach jeder Frucht einfach die If Funktion geschlossen und dann eine neue aufgemacht und Tada, es hat geklappt.

Trotzdem noch mal danke

Hi Rudi´s

hab gerade noch bei dir schnell rein geguckt und habe es gesehen, dass du es genau so gemacht hast. Unser Unterscheid ist nur, dass ich noch bei jeder If Verzweigung noch die einzelnen Sheets aktiviert habe.

Raoul hat oben schon geschrieben, dass ich das eigentlich nicht brauche, es würde es nur verlängern. Aber wann braucht man das? Kann mir das bitte jemand sagen.

Gruß ExcelVBAAänger
Top
#9
Ja, kann. Nicht nur jemand, sondern viele. Und wo du sie findest, sagt dir eine Suchmaschine, wenn Du sie nach
"excel vba vermeide select und activate" fragst.

Aktiviere ein bestimmtes Blatt, wenn es sichtbar sein soll, zB nach Ablauf des Makros, aber nicht, um eine Zelle anzusprechen.

Aktivieren ist eine arbeits- und zeitintensive Aktion. In Deinem Fall nicht viel, aber wenn das in einer Tausend-Zeile-Schleife ist, wäre es schon spürbar. Und dann führst Du, wie in der Codezeile zu sehen ist, Copy mit genau definierten Zellen von genau definierten Blättern aus. Und damit bezieht sich die Formel auf genau definierte Blätter und nicht auf das gerade aktive Blatt. Dessen Aktivierung zuvor ist daher für den Copy-Befehl ohne Bedeutung.

Dennoch, der Makro-Recorder erzeugt solche Makros, wenn er was aufzeichnet. Erst wird das Blatt ausgewählt, und dann eine Zelle, aber ohne Spezifizierung des Blattes. Solche Programme sind meistens ein Indiz dafür, dass es von einem Makrorekorder stammt. Geht, ist aber umständlich. In kleinem Rahmen ist diese Umständlichkeit auch kaum merkbar.

Wenn Dich das interessiert, mach Dich schlau, zb auf jutub. Aber eine Warnung, wie bereits geagt: VBA ist faszinierend und macht süchtig.

Gruss, Raoul
Top
#10
Abend Raoul21,

vielen Dank, dass du mich so auf klärst.

Ich muss schon zu geben, dass mit VBA macht mir schon spaß. Deswegen nehme ich "überraschenden Sonnenaufgänge" gerne in Kauf. :D

Gruß
ExcelVBAAnfänger
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste