PDA

Vollständige Version anzeigen : ...for next


SeNf
03.05.2009, 10:49
mit folgendem code möchte ich einer tabelle dünne und dicke (oder eigentlich weniger dünne) linien zuweisen, abhängig ob in reihe "3" text steht oder nicht.
mit der ausgewählten zelle geht das schon was mir fehlt ist die schleife für alle reihen von 7 bis(fFree) und für die spalten A1:A100 oder noch lieber für den definierten bereich "BEREICH_A"

Dim fFree As Long
Dim rngDatFind As Range
Dim lngCounter As Long

fFree = Rows.Count
If Range("SP_NR").Cells(fFree).Value = "" Then
fFree = Range("SP_NR").Cells(fFree).End(xlUp).Row
End If

SPZiel = Selection.Column

If Rows(3).Cells(SPZiel).Value = "" Then

With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
Else
With Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With

gruß
Steffen

jinx
03.05.2009, 11:15
Moin, Steffen,

ungetestet etwa so:

Dim fFree As Long
Dim rngDatFind As Range
Dim lngCounter As Long

fFree = Rows.Count
If Range("SP_NR").Cells(fFree).Value = "" Then
fFree = Range("SP_NR").Cells(fFree).End(xlUp).Row
End If

SPZiel = Selection.Column

For lngcCounter = 1 To fFree
With Cells(lngCounter, SPZiel)
If .Value = "" Then

With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
Else
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
End With
Next lngCounter

SeNf
03.05.2009, 11:29
Mahlzeit jinx,
danke erstmal...
hmm denke das trifft es aber nicht ganz,
die abfrage, text oder nicht, findet immer in reihe 3 statt.
die linien brauch ich dann im bereich der reihen 7 to fFree ind spalte inder der text gefunden wird und eben ohne selection... :-)
gruß

jinx
03.05.2009, 12:53
Moin, Steffen,

weitere Versuche:

Sub test1()
Dim fFree As Long
Dim rngDatFind As Range
Dim lngCounter As Long
Dim lngColumn As Long

fFree = Rows.Count
If Range("SP_NR").Cells(fFree).Value = "" Then
fFree = Range("SP_NR").Cells(fFree).End(xlUp).Row
End If

For lngColumn = 1 To Cells(3, Columns.Count).End(xlToLeft).Column
If Cells(3, lngColumn).Value = "" Then
With Range(Cells(7, lngColumn), Cells(fFree, lngColumn)).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
Else
With Range(Cells(7, lngColumn), Cells(fFree, lngColumn)).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
End If
Next lngCounter
End Sub
<hr>
Sub test2()
Dim fFree As Long
Dim rngDatFind As Range
Dim lngCounter As Long
Dim lngColumn As Long

fFree = Rows.Count
If Range("SP_NR").Cells(fFree).Value = "" Then
fFree = Range("SP_NR").Cells(fFree).End(xlUp).Row
End If

For lngColumn = 1 To Cells(3, Columns.Count).End(xlToLeft).Column
If Cells(3, lngColumn).Value = "" Then
For lngCounter = 7 To fFree
With Cells(lngCounter, lngColumn).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlHairline
.ColorIndex = xlAutomatic
End With
Next lngCounter
Else
For lngCounter = 7 To fFree
With Cells(lngCounter, lngColumn).Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic
End With
Next lngCounter
End If
Next lngCounter
End Sub

SeNf
03.05.2009, 14:00
super, danke schön!
so wollte ich das!
eine frage noch: du begrenzt das feld mit
End(xlToLeft) ist das das letzte beschriebene feld?

ach ja und für andere die den code mal brauchen können
tauscht
Next lngCounter
gegen
Next lngColumn
;-)
Gruß
Steffen

jinx
03.05.2009, 14:13
Moin, Steffen,

Danke für den Hinweis auf die falsche Zählvariable (kommt davon, wenn man nicht testet). Bezogen auf Deine Frage: zumindest die letzte sichtbare Spalte mit Inhalt (das kann auch ein Leerzeichen oder eine Formel sein, die als Ergebnis nichts anzeigt)...