Microsoft Excel

Herbers Excel/VBA-Archiv

Schleife

Betrifft: Schleife von: Claudia
Geschrieben am: 22.08.2014 09:46:41

Hallo zusammen,

im Forum habe ich folgenden Code gefunden.

Sub Schleife()

Dim RaZelle As Range
For Each RaZelle In Range("C2:C19")
If RaZelle = Environ("UserName ") Then

Spalte1 = ActiveCell.Offset(0, 2).Value
Spalte2 = ActiveCell.Offset(0, 3).Value

End If
Next

End Sub

Das fettmarkierte ist meine Erfinung, die natürlich nicht klappt. Ich möchte, wenn im Bereich C2:C19 der User gefunden wird, dass dann aus E2:E19 bzw. F2:F19 der jeweils in der gleichen Zeile stehende Wert ausgelesen wird.

Beispiel:
User wird in C5 gefunden.
Spalte1 = Wert aus E5
Spalte2 = Wert aus F5

Wie mache ich das?

Vielen Dank und LG
Claudia

  

Betrifft: AW: Schleife von: Daniel
Geschrieben am: 22.08.2014 09:55:12

Hi

das würde ich ohne Schleife mit der .FIND-funktion programmieren:

dim RaZelle as range
dim Spalte1 as variant
dim Spalte2 as variant

Set RaZelle = Range("C2:C19").Find(What:=Environ("Username"), Lookat:=xlwhole, LookIn:=xlvalues) _

If RaZelle is Nothing then
    Msgbox "user nich in Liste"
Else
    Spalte1 = RaZelle.Offset(0, 2).value
    Spalte2 = RaZelle.Offset(0, 3).value
End If
Gruß Daniel


  

Betrifft: AW: Schleife von: Jack_d
Geschrieben am: 22.08.2014 10:20:04

Hallo Claudia,

dein Code kann auch nicht wirklich funktionieren.
Und zwar referenzierst du mit offset aus der aktiven Zelle (Du hast aber keine aktive Zelle)

Du hättest in deinem Code die möglichkeit das ganze mit Select zu umgehen(weniger schön)

Sub Schleife()

Dim RaZelle As Range
For Each RaZelle In Range("C2:C19")

If RaZelle = Environ("UserName ") Then
    RaZelle.Select
    Spalte1 = ActiveCell.Offset(0, 2).Value
    Spalte2 = ActiveCell.Offset(0, 3).Value

End If
Next

End Sub
Oder das ganze von der "gefundenen Zelle" aus machen (schöner weil ohne select)
Sub Schleife()

Dim RaZelle As Range
For Each RaZelle In Range("C2:C19")

If RaZelle = Environ("UserName ") Then

    Spalte1 = RaZelle.Offset(0, 2).Value
    Spalte2 = RaZelle.Offset(0, 3).Value

End If
Next

End Sub
Grüße


  

Betrifft: Abgesehen mal von der idR vorzuziehenden ... von: Luc:-?
Geschrieben am: 22.08.2014 20:56:28

…Alternative ohne Zyklus (intern läuft garantiert auch einer, nur ggf schneller!), Jack,
gebührt dir hier das Verdienst, Claudia ihren Fehler verdeutlicht zu haben, wovon sie sicher auch in anderem (zyklischen) Zusammenhang profitieren kann. ;-)
Gruß, Luc :-?


  

Betrifft: @ Daniel, Jack: Vielen Dank für von: Claudia
Geschrieben am: 23.08.2014 18:08:44

Eure Hilfe und die Erklärung!

LG Claudia


  

Betrifft: Vielen lieben Dank Luc:-? owT von: Jack_d
Geschrieben am: 25.08.2014 11:39:09

ohne weiteren Text


 

Beiträge aus den Excel-Beispielen zum Thema "Schleife"