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

Name und Zeile

Name und Zeile
17.06.2009 20:38:07
Peter
Hallo zusammen,
ich habe eine Spalte mit einem Namen deklariert, z.B. Spalte C = Fritz
Nun kommt das Makro, was den Bereich Fritz prüft. Wie bekomme ich es aber hin, dass erst
ab Zeile 2 geprüft wird.

Sub Werte_größer_60_färben2()
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("Fritz")
For Each Zelle In Bereich
If Zelle  "" And Zelle > 60 Then
With Zelle
.Interior.ColorIndex = 3
'  .Font.Bold = True
End With
End If
Next Zelle
End Sub


Vielen Dank für Eure Hilfe!
Peter

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
If Bereich.Row>1 then ... ungetestet ... oT
17.06.2009 20:41:43
Matthias
AW: Name und Zeile
17.06.2009 20:45:14
Harry
Hi,
du willst wirklich immer alle 65536 Zellen abklappern?
Kannst du den Bereich nicht auf die erforderlichen Zellen eindampfen?
mfg Harry
AW: Name und Zeile
17.06.2009 20:49:04
Peter
Hallo Harry,
verstehe die Frage nicht so ganz. Ich klappere ja nicht alle 65000 Zellen ab, sondern nur
die Zellen, die nicht leer sind. Oder stehe ich auf dem Schlauch?
@ Matthias: Habe es jetzt so eingefügt, passiert aber nix.

Sub Werte_größer_60_färben2()
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("Fritz")
For Each Zelle In Bereich
If Bereich.Row > 1 Then
If Zelle  "" And Zelle > 60 Then
With Zelle
.Interior.ColorIndex = 3
'  .Font.Bold = True
End With
End If
End If
Next Zelle
End Sub


Vermutlich habe ich es ander falschen Stelle eingefügt.
Peter

Anzeige
siehe Korrektur ... oT
17.06.2009 20:50:08
Matthias
AW: Name und Zeile
17.06.2009 21:33:09
Harry
Hi,
"...Oder stehe ich auf dem Schlauch?..."
Ja, es werden aber dennoch alle Zellen geprüft.
mfg
es werden nicht alle Zellen geprüft ...
17.06.2009 21:38:59
Matthias
Hallo
Set Bereich = Range("Fritz")
For Each Zelle In Bereich
Es werden also nur die Zellen im definierten Namen geprüft.
Gruß Matthias
Korrektur
17.06.2009 20:49:24
Matthias
Hallo

Sub Werte_größer_60_färben2()
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Range("Fritz")
For Each Zelle In Bereich
 If Zelle.Row > 1 Then
If Zelle  "" And Zelle > 60 Then
With Zelle
.Interior.ColorIndex = 3
'  .Font.Bold = True
End With
End If
 End If
Next Zelle
End Sub


Gruß Matthias

Anzeige
AW: Korrektur
17.06.2009 20:56:32
Peter
Hallo Matthias,
vielen dank, klappt bestens.
Peter
Noch ne Frage :-)
17.06.2009 21:00:09
Peter
Hallo Matthias,
eine Frage hätte ich noch. Kann man Namen auch bei ActiveCell.Offset ansprechen.
Also die Start-Spalte ist diesem Fall A. Der Eintrag würde also in K erfolgen.
ActiveCell.Offset(0, 10).Value = Format(Date & " " & Time)
Wenn ich nun aber eine Spalte lösche oder einfüge, dann muss ich immer auch den Code anpassen. Hast Du da vielleicht auch einen guten Rat für mich?
Peter
AW: Noch ne Frage :-)
17.06.2009 21:05:27
Peter
Hallo,
eine Frage hätte ich noch. Kann man Namen auch bei ActiveCell.Offset ansprechen.
Also die Start-Spalte ist diesem Fall A. Der Eintrag würde also in K erfolgen.
ActiveCell.Offset(0, 10).Value = Format(Date & " " & Time)
Wenn ich nun aber eine Spalte lösche oder einfüge, dann muss ich immer auch den Code anpassen. Hast Du da vielleicht auch einen guten Rat für mich?
Peter
Anzeige
AW: Noch ne Frage :-)
17.06.2009 21:45:46
Daniel
Hi
das kannst du so machen:
1. der Spalte in der das Datum eingetragen werden soll, einen Namen geben (z.B. ÄndDatum)
2. im Code dann den Datumswert folgendermassen eintragen:

Range("ÄndDatum").Cells(activecell.Row,1).Value = Format(Date & " " & Time)


der Name passt sich ja automatisch an, wenn Spalten eingefügt oder gelöscht werden.
das einzige, was nicht gelöscht werden darf, ist die Spalte, auf die sich der Namen bezieht.
Gruß, Daniel

@ Daniel, danke
17.06.2009 21:59:13
Peter
für die Lösung. Das ist echt eine Erleichterung.
Gruß Peter
Anzeige
nachgefragt ...
17.06.2009 21:07:48
Matthias
Hallo
Sorry. Ich kann Dir nicht folgen.
Hat das was mit Deinem letzten beitrag zu tun ?
Dort wird keine Zelle aktiviert !!
also wäre ActiveCell.Offset(, 10) immer die gleiche Zelle !
Gruß matthias
bitte ;o) _oT
17.06.2009 21:01:32
Matthias
AW: Name und Zeile
17.06.2009 20:57:42
Daniel
Hi
in deinem Fall könnte man das so realisieren:

For each Zelle in Range("Fritz").SpecialCells(xlcelltypeconstants, 1)
if Zelle.Value > 60 then
end  if
next


dann läuft die Schleife nur über die Zellen, die eine Zahl enthalten.
(achtung, sollten keine Zahlen vorhanden sein, gibts nen Fehler mit Makroabbruch)
werden die Werte durch Formeln erzeugt, muss man statt "xlCelltypeConstants" eben "xlCelltypeFormulas" verwenden.
ne andere Methode den Zellbereich auf das notwendige einzuschränken wäre:


For each Zelle in Intersect(Range("Fritz"), Range("Fritz").Parent.Usedrange.Offset(1,0))
Next


in diesem Fall wird die Schnittmenge aus "Fritz" und des genutzen Zellbereichs auf dem Tabellenblatt, in dem sich "Fritz" befindet gebildet. Dabei wird der Genutze Zellbereich um 1 nach unten verschoben, so daß die erste Zeile nicht zur Schnittmenge gehört.
Gruß Daniel

Anzeige
ActiveCell.Offset(1, 0).Select
17.06.2009 21:15:03
Peter
Hallo Matthias,
nein gar nicht, war schon auf dem Sprung woanders hin. :-)
Hier ein verkürztes (und sinnloses) Makro:

Sub Test()
Range("a2").Select
Do Until ActiveCell.Value = ""
i = i + 1
If i = 200 Then
ActiveWorkbook.Save
i = 1
Else
End If
ActiveCell.Offset(0, 10).Value = Format(Date & " " & Time)
ActiveCell.Offset(1, 0).Select
Loop
End Sub


Das Makro würde nun also in Spalte K den Eintrag machen, bis die erste leere Zelle in Spalte A auftaucht.
Wenn ich nun aber noch zwei Spalten einfüge, dann müsste ich den Code auf 12 ändern. Das ist ziemlich lästig, weil es ca. 50 Spalten sind, wo was eingelesen wird.
Daher wäre es natürlich Klasse, wenn ich das auch über einen Namen definieren kann. Oder was anderes, Hauptsache ich muss den Code nicht anpacken und Zeile für Zeile durchgehen.
Danke für Deinen fachlichen Rat.
Peter

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige