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

Formatierung über vba

Formatierung über vba
03.03.2007 15:53:00
Wolfgang
Hallo,
ich hab das folgende Problem
Die Zahlen als Text formatiert 1/3, 1/2, 3/1, 2/1, 2/3, 3/2 stellen in meinem Schichtkalender
die die Wachabteilungen dar.
Bedeutet: 1/3 = 1 Tagesdienst / 3 Nachtdienst usw.
Wie kann man jetzt per vba die Bruchzahlen so formatieren das mal die mit einer 1, 2 oder 3 mit einer Hintergrundfarbe hervorgehoben wird.
Um die einzelnen Schichten besser hervorzuheben.
Anbei einen Ausschnitt meines Kalenders:
https://www.herber.de/bbs/user/40823.htm
Danke und Gruß
Wolfgang

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formatierung über vba
03.03.2007 16:25:00
Veit
Hallo Wolfgang,
der folgende Code, sollte Dir weiterhelfen:
Option Explicit
Sub formatierung()
Dim spalte As Integer, zeile As Integer
Dim vornhinten As String, kennziffer As String
Dim wb1 As Workbook
Dim ws1 As Worksheet
Set wb1 = ThisWorkbook
Set ws1 = wb1.Sheets("Tabelle3")
spalte = 1
zeile = 1
'da ich nicht wußte ob Du den ersten Teil meinst oder den letzten
vornhinten = InputBox("welche Zahl darfs denn sein ;-) [vorn|hinten]?", "Frage", "vorn")
For zeile = 1 To ws1.Cells(zeile, spalte).CurrentRegion.Rows.Count
If vornhinten = "vorn" Then
kennziffer = Left(ws1.Cells(zeile, spalte).Value, 1)
Else
kennziffer = Right(ws1.Cells(zeile, spalte).Value, 1)
End If
Select Case kennziffer
Case "1"
ws1.Cells(zeile, spalte).Interior.ColorIndex = 6
Case "2"
ws1.Cells(zeile, spalte).Interior.ColorIndex = 4
Case "3"
ws1.Cells(zeile, spalte).Interior.ColorIndex = 3
Case Else
End Select
Next zeile
End Sub

Grüße
Ein Veit
Anzeige
AW: Formatierung über vba
03.03.2007 16:38:48
EtoPHG
Hallo Wolfgang,
Das liesse sich ohne Probleme ohne VBA sondern mit bedingter Formatierung so lösen:
https://www.herber.de/bbs/user/40824.xls
Gruss Hansueli
AW: Formatierung über vba
03.03.2007 18:01:48
Wolfgang
Hallo Veit,
gemeint sind alle Zahlenkombinationen in der eine 1 oder 2 oder 3 beinhalten.
Deshalb habe ich Deiner Formel verändert und es scheint zu funktioneren.
Sieht jetzt so aus :
=ODER(RECHTS($C4;1)=$D$1&"";LINKS($C4;1)=$D$1&"")
Einfach aber genial
Meinen Besten Dank für diese Lösung.
Und nach eine Nachricht an Hansueli
ich wollte dein Makro ausprobieren. Zudem habe ich es in Modul kopiert und die Anweisung
Set ws1 = wb1.Sheets("Tabelle2") im Makro angepasst.
Aber ich bekomme dennoch eine Fehlermeldung:
Index außerhalb des gültigen Bereiches
Wenn Du mir sagen kannst was ich ändern muß, damit das Makro läuft.
Wäre Super auf jeden Fall Danke ich Dir für Deine Lösung
Gruß Wolfgang
Anzeige
AW: Formatierung über vba
03.03.2007 20:23:00
EtoPHG
Hallo Wolfgang,
Ich glaub Du hast da die Namen ein bisschen vertauscht.
Hansueli (das bin ich) ist der Lieferant der bedingten Formatierung.
Veit hat Dir den Code geschickt. Den Code möchte ich allerdings nicht überarbeiten, da er zu viele 'Fehler' hat. Darum hier eine Alternative in VBA. Der Code gehört in das Tabellenblatt in dem Du die formatierung willst:

Sub SchichtFarbe()
Dim vAnswer As Variant
Dim dLast As Double
Dim cCell As Range
vAnswer = InputBox("Welche Schicht [1..3] soll markiert werden?", "Schicht markieren", "1")
If vAnswer = "" Then Exit Sub
Application.ScreenUpdating = False
dLast = ActiveSheet.Range("G" & Trim(Str(ActiveSheet.Rows.Count))).End(xlUp).Row
For Each cCell In ActiveSheet.Range("G2:G" & Trim(Str(dLast)))
If InStr(cCell.Value, vAnswer) > 0 Then
cCell.Interior.ColorIndex = 6
Else
cCell.Interior.ColorIndex = xlNone
End If
Next
Application.ScreenUpdating = True
End Sub
Übrigens, diese Formel würde in dem Fall (egal wo die Schicht steh) auch für die formatierte Bedingung funktionieren:

Bed.Formatierung in C2  und runterkopieren...    =FINDEND(D$1&"";C2)

Gruss Hansueli
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige