Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema RefEdit
BildScreenshot zu RefEdit RefEdit-Seite mit Beispielarbeitsmappe aufrufen

For each c in Bereich | Herbers Excel-Forum


Betrifft: For each c in Bereich von: Gregor
Geschrieben am: 24.10.2008 16:32:40

Hallo

Ich habe folgende Abfrage:
For Each c In Bereich
Wert = Cells(c.Row, 7).Value
If Wert <> "kein" Then
usw.

Ich möchte also bei c (Zeile) Spalte 7 den Wert abfragen und je nach Wert weiterfahren. Bereich ist in Spalte 5 definiert.

Wie komme ich zu dieser Zeilen-Nummer. c.Row geht nicht.

Danke und Gruss
Gregor

  

Betrifft: AW: For each c in Bereich von: David
Geschrieben am: 24.10.2008 16:39:08

Hallo Gregor,

wie ist denn c definiert? Was ist mit Bereich definiert (Syntax)?

Gruß
David


  

Betrifft: AW: For each c in Bereich von: Gregor
Geschrieben am: 24.10.2008 16:48:54

David

In Spalte 5 stehen Werte von 0 bis 420
Beginn aus For Beginn = 3 to lZeile
Für Zähler werden vorgängig leere Zeilen gezählt

Bereich = Range(Cells(Beginn, 5), Cells(Beginn + Zähler, 5))

For Each c In Bereich
Wert = Cells(c.Row, 7).Value
If Wert <> "kein" Then
Differenz = c - 250
If Differenz < 0 Then
Cells(Beginn, 10).Value = Differenz
End If
End If
Next


usw.

Danke und Gruss
Gregor


  

Betrifft: AW: For each c in Bereich von: David
Geschrieben am: 24.10.2008 17:04:36

sorry, keine Zeit mehr.

Gebe ab und setze die Frage wieder auf offen

David


  

Betrifft: AW: For each c in Bereich von: Gregor
Geschrieben am: 24.10.2008 17:17:20

oK.

Wer kann weiterhelfen?

Gregor


  

Betrifft: AW: For each c in Bereich von: Heinz
Geschrieben am: 24.10.2008 17:52:09

Hi,

du solltes Rückfragen schon beantworten, wie und als was ist c deklariert?

mfg Heinz


  

Betrifft: AW: For each c in Bereich von: Erich G.
Geschrieben am: 24.10.2008 18:00:40

Hallo Gregor,
c.Row ergibt einen Fehler vermutlich, weil c bzw. Bereich nicht als Range deklariert sind.
Du hast leider nicht das komplette Makro (insbesondere die Deklarationen) gepostet,
deshalb ist das jetzt nur eine Vermutung.
Eine Antwort auf Davids Frage wäre sicher nützlich gewesen.

Wenn ich den Code richtig verstanden habe, wird jedesmal, wenn in Spalte 7 eine Zahl kleiner als 250 steht,
die Zelle Cells(Beginn, 10) mit der Differenz beschrieben - immer wieder die selbe Zelle.
Das ist kaum sinnvoll.

Die folgenden drei Prozeduren tun alle das Gleiche:

Option Explicit         ' IMMER ZU EMPFEHLEN!

Sub Gregor1()
   Dim lngBeg As Long   ' Beginn
   Dim lngZae As Long   ' Zähler
   Dim rngBer As Range  ' Bereich
   Dim rngC As Range    ' c
   Dim strW As String   ' Wert
   Dim dblDif As Double ' Differenz
   
   lngZae = 5
   lngBeg = 8
   Set rngBer = Range(Cells(lngBeg, 5), Cells(lngBeg + lngZae, 5))

   For Each rngC In rngBer
      strW = Cells(rngC.Row, 7).Value
      If strW <> "kein" Then
         dblDif = rngC - 250
         If dblDif < 0 Then
            Cells(lngBeg, 10).Value = dblDif
         End If
      End If
   Next rngC
End Sub

Sub Gregor2()
   Dim lngBeg As Long
   Dim lngZae As Long
   Dim rngC As Range

   lngZae = 5
   lngBeg = 8

   For Each rngC In Range(Cells(lngBeg, 7), Cells(lngBeg + lngZae, 7))
      If IsNumeric(rngC) Then
         If rngC < 250 Then Cells(lngBeg, 10) = rngC - 250
      End If
   Next rngC
End Sub

Sub Gregor3()
   Dim lngBeg As Long
   Dim lngZae As Long
   Dim lngR As Long

   lngZae = 5
   lngBeg = 8

   For lngR = lngBeg + lngZae To lngBeg Step -1
      If IsNumeric(Cells(lngR, 7)) Then
         If Cells(lngR, 7) < 250 Then
            Cells(lngBeg, 10) = Cells(lngR, 7) - 250
            Exit For
         End If
      End If
   Next lngR
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: For each c in Bereich von: Gregor
Geschrieben am: 24.10.2008 20:38:03

Hallo Erich



Ja, mit Range funktionierts.



Vielen Dank auch für deine Beispiele. Mit Hilfe dieser Beispiele kann ich meinen Code vereinfachen.



Gregor


Beiträge aus den Excel-Beispielen zum Thema "For each c in Bereich"