Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
888to892
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
888to892
888to892
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Farbänderung mit VBA

Farbänderung mit VBA
24.07.2007 10:41:23
metleck
Hallo!
Ich kenne mich ein wenig mit Excel VB aus.
Jetzt habe ich ein Skript geschrieben, mit dessen Hilfe Zellen die grün sind , blau gefärbt werden sollen. Leider passiert garnichts wenn ich e´s laufen lasse.
Hier das Skript:

Sub Makro1()
Dim i As Integer
i = 1
For i = 1 To 250
If Range("A" & i) = Selection.Interior.ColorIndex = 43 Then
Range("A" & i).Interior.Color = Selection.Interior.ColorIndex = 37
i = i + 1
End If
Next i
End Sub


Ich kann mit nicht erklären woran das liegt.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbänderung mit VBA
24.07.2007 10:55:00
Harry
Hallo,
du möchstest nur jede 2. Zeile ändern (Zeile i=i+1 in der for-next-Schleife)?
Hier mal drei Prozeduren zum Setzen der Farbe auf 43 und zum ändern jeder (oder jeder zweiten) Zeile in 37

Sub Farbesetzen()
Dim i As Integer
i = 1
For i = 1 To 250
Range("A" & i).Interior.ColorIndex = 43
Next i
End Sub
Sub FarbejedezweiteZeileaendern()
Dim i As Integer
For i = 1 To 250
If Range("A" & i).Interior.ColorIndex = 43 Then
Range("A" & i).Interior.ColorIndex = 37
i = i + 1
End If
Next i
End Sub
Sub FarbejedeZeileaendern()
Dim i As Integer
For i = 1 To 250
If Range("A" & i).Interior.ColorIndex = 43 Then
Range("A" & i).Interior.ColorIndex = 37
End If
Next i
End Sub


Gruß
Harry

Anzeige
AW: Farbänderung mit VBA
24.07.2007 11:07:53
metleck
Oh man ich Doof:) Klar das next i reicht.
Ja nun geht es. Also merk ich mir das es ausreicht "Range("A" & i).Interior.ColorIndex = 37" das zu schreiben und nicht noch Selection. (das hatte ich aus einem anderen Skript ohne Bedenken übernommen. Ich denke sowas lass ich mal)
Vielen vielen Dank dafür!!!!!!!!!!!!!!!!!!
Ich hätte da noch eine kleine Sache, und zwar eine Telefonnummernliste mit vielen Einträgen.
Ihr kennt bestimmt dieses 0049 1234, +49 1234 , +49(0) 1234 (1234 sind die entsprechenden Tel.Nummern)
Das soll jetzt vereinheitlicht werden auf +49 1234.
Ich wollte das einfach durch suchen und ersetzen lösen, habe aber vorher festgestellt das es Nummer mit 0049 am Ende gibt, das heißt das diese Lösung nicht funktionieren kann.
Kann man mit Hilfe von VBA sagen : Ändere die ersten 4 Zeilen in +49 wenn dort steht 0049 oder +49 (0) ...
Klar If Range("A" & i) = 0049 THEN
Range("A" & i) = +49
Aber wir schaffe ich das nur für die ersten 4 Ziffern in der Zelle?

Anzeige
AW: Farbänderung mit VBA
24.07.2007 11:28:51
Harry
So?

Sub TelNrvereinheitlichen()
Dim rg As Range
For Each rg In ActiveSheet.Range("A1:A250")
If Mid(rg.Value, 1, 5) = "0049 " Then rg.Value = "'+49 " & Mid(rg.Value, 6, Len(rg. _
Value) - 5)
If Mid(rg.Value, 1, 7) = "+49(0) " Then rg.Value = "'+49 " & Mid(rg.Value, 8, Len(rg. _
Value) - 7)
Next
End Sub


Gruß
Harry

AW: Farbänderung mit VBA
24.07.2007 11:33:32
metleck
Ja genau sowas.
Kannst du mir vielleicht noch kurz sagen wofür das steht:
Mid(rg.Value, 6, Len(rg. _
Value) - 5)

AW: Farbänderung mit VBA
24.07.2007 11:38:00
Harry
siehe VBA-Hilfe
Mid(rg.Value, 6, Len(rg. Value) - 5)
Mid = Teilstring aus einem String (hier rg.Value) von dem 6. Zeichen, und zwar Len(rg. Value) - 5 Zeichen lang
Len(rg.Value) ist die Länge des Original-Strings,
Len(..) -5 ergibt damit die Länge des Strings abzgl. der 5 Zeichen, die ersetzt werden sollen
Alternativen sind Left und Right - siehe Hilfe

Anzeige
AW: Farbänderung mit VBA
24.07.2007 11:51:16
Renee
Hi Metleck,
Hier ein weiterer dilletantischer Ansatz für die Telefonnummern:

Sub tel()
Dim rc As Range
Dim rPos As Integer
For Each rc In ActiveSheet.Range("A1:A250")
rPos = InStr(rc.Value, "49")
If rPos > 0 And rPos  0 Then _
rc.Value = "+49" & Mid(rc.Value, InStr(rc.Value, " "))
Next
End Sub


Greetz Renee

AW: Farbänderung mit VBA
24.07.2007 10:59:00
Renee
Mazwara Metleck,
ich kenne mich auch ein wenig mit Excel VB aus.
Dieser Befehl

If Range("A" & i) = Selection.Interior.ColorIndex = 43 Then


hat mindestens 3 potenzielle Fehler:
1. Range ist keinem Objekt zugeordnet, besser wäre z.B. ActiveSheet.Range(...
2. Selection. = 43 gibt nur WAHR zurück, wenn die selektierten (nicht die getesteten!) Zellen den Farbcode 43 haben
3. Es werden alle Zellen abhängig von der Laufvariablen i auf TRUE getestet und nicht auf den Farbcode.
Greetz Renee

Anzeige
AW: So wär's richtiger
24.07.2007 11:04:09
Renee
Hi again,
Das wolltest Du, oder nicht?

Sub xyz()
Dim rc As Range
For Each rc In ActiveSheet.Range("A1:A250")
If rc.Interior.ColorIndex = 43 Then rc.Interior.ColorIndex = 37
Next
End Sub


Greetz Renee

AW: So wär's richtiger
24.07.2007 11:14:00
metleck
Oh ja das ist toll. Das spart mir ja mehr als 3/4 meines Codes.
Danke!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige