Microsoft Excel

Herbers Excel/VBA-Archiv

Frage zu Wenn Dann Funktion

Betrifft: Frage zu Wenn Dann Funktion von: Pascal
Geschrieben am: 27.07.2008 18:30:17

Hallo alle zusammen!

Ich habe folgenden Code versucht so zu gestalten, dass alle 5 folgenden Bedingungen bearbeitet werden:

"A" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 13) eingefügt werden
"B" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 14) eingefügt werden
"C" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 15) eingefügt werden
"D" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 16) eingefügt werden
"E" steht in Spalte 2 -> dann soll der Text links daneben kopiert und in wksI.Cells(zelle, spalte + 17) eingefügt werden

Wenn dort anstatt dieser Begriffe ("A", "B", usw.) in Spalte 1 "Symbol not found" gefunden wird, dann soll er in alle 5 Zellen "k.A." schreiben.

     
zelle = 7
spalte = 1

Set wksC = Worksheets("Cache")
   Set wksI = Worksheets("Input")

   varZ = Application.Match("A", wksC.Columns(2), 0)
   If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 13) = wksC.Cells(varZ, 1).Value
   
     varZ = Application.Match("B", wksC.Columns(2), 0)
   If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 14) = wksC.Cells(varZ, 1).Value
   
     varZ = Application.Match("C", wksC.Columns(2), 0)
   If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 15) = wksC.Cells(varZ, 1).Value
      
     varZ = Application.Match("D", wksC.Columns(2), 0)
   If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 16) = wksC.Cells(varZ, 1).Value
   
        varZ = Application.Match("E", wksC.Columns(2), 0)
   If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 17) = wksC.Cells(varZ, 1).Value
   
   
     varZ = Application.Match("Symbol not found.", wksC.Columns(1), 0)
 If IsNumeric(varZ) Then
      wksI.Cells(zelle, spalte + 13) = "k.A."
          wksI.Cells(zelle, spalte + 14) = "k.A."
              wksI.Cells(zelle, spalte + 15) = "k.A."
                  wksI.Cells(zelle, spalte + 16) = "k.A."
                      wksI.Cells(zelle, spalte + 17) = "k.A."
    End If
     End If
      End If
       End If
        End If
         End If



Ich vermute, dass das irgendwie mit "else" gelöst werden muss, aber dann ergab sich bei mir immer ne Endlosschleife oder es wurden die anderen Bedingungen nicht mehr bearbeitet :(

Wäre nett wenn ihr mir weiterhelfen könntet!

Einen schönen Sonntagabend noch!

Gruß Pascal

  

Betrifft: AW: Frage zu Wenn Dann Funktion von: Uduuh
Geschrieben am: 27.07.2008 19:50:30

Hallo,
so?

Sub tt()
  Dim rngc As Range
  Dim wksC As Worksheet, wksL As Worksheet
  Dim Spalte As Long, Zeile As Long
  Set wksC = Worksheets("Cache")
  Set wksL = Worksheets("Input")
  For Each rngc In wksC.Columns(1)
  Select Case rngc
    Case "A" To "E": wksL.Cells(Zeile, Asc(rngc) - Spalte - 50) = rnkc.Offset(0, -1)
    Case Else
      If rngc.Offset(0, -1) = "Symbol not found" Then
        With wksL
          .Range(.Cells(Zeile, Spalte + 12), .Cells(Zeile, Spalte + 17)) = "k.A"
        End With
      End If
  End Select
  Next rngc
End Sub



Gruß aus’m Pott
Udo



  

Betrifft: AW: Frage zu Wenn Dann Funktion von: Pascal
Geschrieben am: 27.07.2008 22:35:10

Hallo Udo!

Ich glaube, dass ich meinen Fall zu undeutlich beschrieben habe, oder du ihn anders interpretiert hast.
Ich versuch es daher nochmal zu beschreiben:

Also es ist so, dass in Spalte 2 folgende Worte in unterschiedlichen Zeilen stehen:
"Apfel", "Birne", "Clementine", "Dattel" und "Erdbeer"

Wenn da nun "Apfel" in Zeile X steht dann soll die Zelle links daneben kopiert und in wksI.Cells(zelle, spalte + 13) eingefügt werden.
Dann soll anschließend überprüft werden, wo "Birne" in der Spalte 2 steht (z.B. in Zelle Y) und auch die Zelle links daneben soll kopiert und in wksI.Cells(zelle, spalte + 14) eingefügt werden.
Dasselbe Spiel mit "Clementine", "Dattel" und "Erdbeer" :)

Wenn nun nichts davon zutrifft dann steht da wahrscheinlich "Symbol not found" in Spalte 1, aber er kann auch generell einfach in alle 5 Zellen "k.A." schreiben. Es stehen nämlich immer alle 5 Obstsorten in Spalte 2 oder keines, nur die Zelle variiert halt...

Hoffe die Beschreibung war jetzt verständlicher... Oder muss ich die Begriffe dann nur noch irgendwo definieren? Nehme mal an, dass Case "Apfel" To "Erdbeer": nicht so funktionieren wird :)
Danke vorab für eure Hilfe!

Gruß Pascal


  

Betrifft: AW: Frage zu Wenn Dann Funktion von: Rudi Maintaire
Geschrieben am: 28.07.2008 09:42:16

Hallo,
so?

Sub tt()
  Dim rngC As Range
  Dim wksC As Worksheet, wksL As Worksheet
  Dim Spalte As Long, Zeile As Long
  Set wksC = Worksheets("Cache")
  Set wksL = Worksheets("Input")
  
  Spalte = 1
  Zeile = 7
  For Each rngC In wksC.Columns(1).SpecialCells(xlCellTypeConstants)
    Select Case rngC
      Case "Apfel":      wksL.Cells(Zeile, Spalte + 13) = rngC.Offset(0, -1)
      Case "Birne":      wksL.Cells(Zeile, Spalte + 14) = rngC.Offset(0, -1)
      Case "Clementine": wksL.Cells(Zeile, Spalte + 15) = rngC.Offset(0, -1)
      Case "Dattel":     wksL.Cells(Zeile, Spalte + 16) = rngC.Offset(0, -1)
      Case "Erdbeere":   wksL.Cells(Zeile, Spalte + 17) = rngC.Offset(0, -1)
      Case Else
          With wksL
            .Range(.Cells(Zeile, Spalte + 13), .Cells(Zeile, Spalte + 17)) = "k.A"
          End With
    End Select
    Zeile = Zeile + 1
  Next rngC
End Sub


Gruß
Rudi


  

Betrifft: AW: Frage zu Wenn Dann Funktion von: Pascal
Geschrieben am: 28.07.2008 13:24:06

Hallo Rudi!

Vielen Dank, für deine Lösung! Klappt nun wie gewünscht :)

Einen Schönen Tag noch!!!


 

Beiträge aus den Excel-Beispielen zum Thema "Frage zu Wenn Dann Funktion"