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

Bedingung erfüllt und rein kopieren

Bedingung erfüllt und rein kopieren
17.09.2020 23:46:04
wayan
Guten Abend zusammen,
ich habe eine ``kleine´´ Aufgabe bekommen und habe sogar meinen ehemaligen Excel Dozenten gefragt und der konnte mir leider auch nicht weiter helfen, also versuche ich hier mein Glück. Also folgende Aufgabenstellung:
Ich habe 2 verschiedene Worksheets, in dem ersten habe ich 4 verschiedene Sorten: Banane, Äpfel, Kirsche und Beere. Im 2. Worksheet habe ich zu jeder Frucht mehrere Eigenschaften. Diese Eigenschaften sollen im 1. Sheet angezeigt werden, wenn die jeweilige Frucht im Dropdown mit Ja ausgewählt worden ist, bei einem Nein, soll von dieser Frucht gar nichts angezeigt werden.
Hiermit habe ich schon mein Glück versucht, leider klappt es (noch) nicht, arbeite auch jetzt zum ersten mal mit VBA.
(

Sub Anzeigen()
Dim Banane As String
Dim Apfel As String
Dim Kirsche As String
Dim Beere As String
Worksheets("Zutaten").Select
If Cells(13, 3).Value = Ja Then
Banane = Range("Bereich1")
ElseIf Cells(14, 3).Value = Ja Then
Apfel = Range("Bereich2")
ElseIf Cells(15, 3).Value = Ja Then
Kirsche = Range("Bereich3")
ElseIf Cells(16, 3).Value = Ja Then
Beere = Range("Bereich4")
End If
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Frucht
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Hinweistext
End Sub
VIELEN DANK SCHON MAL IM VORRAUS

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingung erfüllt und rein kopieren
18.09.2020 09:41:19
Klaus
Ohne VBA.
für die Banane:
=WENN(C13="ja";SVERWEIS("Banane";Bereich1;[SpaltenindexFrucht];)&SVERWEIS("Banane";Bereich1; [SpaltenindexHinweis];);"")
Statt "Banane" kannst du natürlich eine Zelle referenzieren. Da du in VBA Range("Bereich1") schreibst gehe ich davon aus das ist ein bekannter Bereich, der funktioniert dann auch in Formeln. Den Spaltenindex kann ich nicht kennen, der ist aber höchst wahrscheinlich 2 und 3.
Zu deinem VBA:
Du musst ein Worksheet nicht selektieren, um es zu referenzieren. Geht eleganter so (beachte die Punkte vor dem Range):

With Worksheets("Zutaten")
If .Cells(13, 3).Value = "Ja" Then
Banane = .Range("Bereich1").Value
ElseIf .Cells(14, 3).Value = "Ja" Then
Apfel = .Range("Bereich2").Value
End If
End With
Außerdem habe ich die Werte "Ja" in Anführungsstriche gesetzt - denn du fragst ja ab, ob in C13 das Wort "Ja" steht. Ohne Anführungsstriche ist es eine Variable!
Die Zuordnung
Apfel = .Range("Bereich2").Value
habe ich um .Value ergänzt. Das ist zwar im Prinzip nicht notwendig da .Value die Standardbelegung von RANGE ist, macht den Code aber übersichtlicher und verständlicher. Gewöhn dir das lieber früh an!
Unten versuchst du "activecell" zu selektieren. Das kann aber nicht klappen, da du vorher per Select das Worksheet gewechselt hast. Woher weisst du, auf welcher Zelle im neuen Worksheet das landet?
Mit dem oben gezeigten Trick (With ...) könnte das klappen, solange du ActiveCell.select hinter das EndWith schreibst. Mit erschließt sich aber nicht was du damit wilst, denn der Variable "Frucht" welche du in offset(1,0) schreiben willst ist gar kein Wert zugewiesen, genau genommen ist sie nichtmal deklariert (was Option Explicit gezeigt hätte, benutze es).
Zuletzt: Select ist nicht nötig, statt

ActiveCell.Offset(1, 0).Select
ActiveCell.Value = Frucht
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = Hinweistext

besser:

ActiveCell.Offset(1,0).value = Frucht
ActiveCell.Offset(2,0).value = Hinweistext
So ... und die 20€ Crosspostingbeitrag spendest du bitte in meinem Namen an die SOS Kinderdörfer.
LG,
Klaus
Anzeige
AW: Bedingung erfüllt und rein kopieren
18.09.2020 12:18:48
ralf_b
@TE : wenn das eine "kleine" Aufgabe ist und du damit nicht klar kommst, dann würde ich mich fragen ob ich dort gut aufgehoben bin. Mann kann nur hoffen, das dein Chef nicht mitliest.
zum Lösungsvorschlag von Klaus.... is mir beim neugierig Gucken aufgefallen. Sorry Klaus
 ActiveCell.Offset(1,0).value = Frucht
ActiveCell.Offset(2,0).value = Hinweistext

 ActiveCell.Offset(1,0).value = Frucht
ActiveCell.Offset(1,1).value = Hinweistext

und... da du "Bereich 1" als mehrere Eigenschaften beschreibst, wird eine Zuweisung mit .Value evtl. nicht klappen. Bei mehreren Zellen beißt sich das.
da sind noch einige unklare Dinge. Wie wärs mit ne Beispielmappe für uns? Deine Ohrfeigen wegen dem Crossposting hast du ja schon weg.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige