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

Zellen suchen - finden - formatieren

Zellen suchen - finden - formatieren
03.02.2009 13:41:00
nicobit
Hallo
have eine Frage:
erst mal mein Makro:
Sub termine_combustor_copy()
'EV Combustor'
Sheets("Combustor").Activate
LetzteZeile_WB = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
'Initialisierung'
Sheets("Termine").Activate
Range(Cells(4, 1), Cells(LetzteZeile_WB, 159)).Select
Selection.ClearContents
Range(Cells(4, 1), Cells(LetzteZeile_WB, 159)).Select
Selection.Interior.ColorIndex = xlNone
Selection.Font.ColorIndex = 1
'Kopieren der Daten'
Sheets("combustor").Activate
Range(Cells(4, 2), Cells(LetzteZeile_WB, 4)).Select
Selection.copy
Sheets("Termine").Activate
Cells(4, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Deadline'
Range(Cells(4, 117), Cells(LetzteZeile_WB, 117)).Interior.ColorIndex = 33

'Datenübertragung'
'"Required from TGNPO"'
Sheets("Combustor").Activate
For i = 5 To LetzteZeile_WB
If Cells(i, 8)  Empty Then
Name = Cells(i, 3).Value
'Lokalisierung der Component-Namen und Daten'
row = Cells(i, 3).row
Comp = Cells(row, 3).Value
deldate = Cells(row, 8).Value
'Suche und Lokalisierung des Datenpaars Comp/exdate'
Sheets("Termine").Activate
'Name
Cells.Find(What:=Name, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
y = ActiveCell.row
'Required from TGNPO'
Cells.Find(What:=deldate, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
x_tgnpo = ActiveCell.Column
Cells(y, x_tgnpo).Interior.ColorIndex = 27
End If
Next
'"Design confirmend"'
Sheets("Combustor").Activate
For i = 5 To LetzteZeile_WB
If Cells(i, 9)  Empty Then
Name = Cells(i, 3).Value
'Lokalisierung der Component-Namen und Daten
row = Cells(i, 3).row
Comp = Cells(row, 3).Value
pldate = Cells(row, 9).Value
'Suche und Lokalisierung des Datenpaars Comp/exdate
Sheets("Termine").Activate
'Name
Cells.Find(What:=Name, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
y = ActiveCell.row
'Expected Date
Cells.Find(What:=pldate, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
x_pl = ActiveCell.Column
Cells(y, x_pl).Interior.ColorIndex = 32
End If
Next
'übertragen aller "Final approved"'
Sheets("Combustor").Activate
For i = 5 To LetzteZeile_WB
If Cells(i, 10)  Empty Then
Name = Cells(i, 3).Value
'Lokalisierung der Component-Namen und Daten
row = Cells(i, 3).row
Comp = Cells(row, 3).Value
deldate = Cells(row, 10).Value
Next
'Suche und Lokalisierung des Datenpaars Comp/exdate
Sheets("Termine").Activate
'Name
Cells.Find(What:=Name, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
y = ActiveCell.row
'Expected Date
Cells.Find(What:=deldate, After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
x_del = ActiveCell.Column
For j = 2 To 159
Cells(y, j).Interior.ColorIndex = 48
Cells(y, 2).Font.ColorIndex = 2
Cells(y, 3).Font.ColorIndex = 2
Next
End If
Sheets("Termine").Activate
End Sub


Der erste Teil funzt (scharz)... hat zwar ein bisschen gedauert bis ichs geschafft habe aber jetzt klappts. Beim blauen teil haperts. Ihn habe ich bereits in einem alten sheet benutzt... Irgendwie funzt er jetzt jedoch nicht mehr. Die Aufgabe wäre Daten aus der Liste im tabellenblatt(sheet:combustor) auf ein Kalenderblatt(sheet: termine) zu übertragen (oberste Zeile: Kalenderwochen, linke Spalte Teilenamen und dann sollte wenn ein Teil z.B 2008wk10 geliefert wird, diese Zelle blau markiert werden... war das verständlich?)
hat jemand eine sinnvolle Idee wie ich die Zellenwerte aus Tabellenblatt nehmen, in Kalenderblatt suchen und dann gewünschte Zelle formatieren kann?
Vielen Dank!
Gruss Nicolas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen suchen - finden - formatieren
03.02.2009 18:44:00
fcs
Hallo Nicolas,
das Problem bei deinen For-Next-Schleifen ist, dass
1.) bei der letzten Schleife das "Next" an der falschen Position steht
2.) Sheets("Combustor").Activate jeweils die 1. Zeile nach dem For ... Befehl sein muss.
Hier mal ein Beispiel mit deinen Daten und der Beseitigung der unseligen Activate- und Select-/Selection-Anweisungen. Einige überflüssige Zeilen hab ich ebenfalls weggelassen und ein paar Variablen umbenannt, so dass sie nicht mit VBA-Namen verwechselt werden können (Row, Name)
Gruß
Franz

Sub termine_combustor_copy()
Dim wksCombustor As Worksheet, wksTermine As Worksheet
Dim LetzteZeile_WB As Long
Dim lngRow As Long
Dim varName As Variant
Dim y As Long, x_tgnpo As Long, x_pl As Long, x_del As Long
Dim deldate As Variant, pldate As Variant
Dim rngGefunden  As Range
Const bolActivate = False 'wenn True, dann werden die Blätter beim Ablauf jeweils _
aktiviert. Nur zum Testen im Schrittmodus auf True einstellen!
Set wksCombustor = Worksheets("combustor")
Set wksTermine = Worksheets("Termine")
'EV Combustor'
With wksCombustor
If bolActivate = True Then .Activate
LetzteZeile_WB = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
'Initialisierung'
With wksTermine
If bolActivate = True Then .Activate
With .Range(.Cells(4, 1), .Cells(LetzteZeile_WB, 159))
.ClearContents
.Interior.ColorIndex = xlNone
.Font.ColorIndex = 1
End With
End With
'Kopieren der Daten'
With wksCombustor
If bolActivate = True Then .Activate
.Range(.Cells(4, 2), .Cells(LetzteZeile_WB, 4)).Copy
End With
With wksTermine
If bolActivate = True Then .Activate
.Cells(4, 1).PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'Deadline'
.Range(.Cells(4, 117), .Cells(LetzteZeile_WB, 117)).Interior.ColorIndex = 33
End With
'Datenübertragung'
'"Required from TGNPO"'
Application.ScreenUpdating = False
With wksCombustor
For lngRow = 5 To LetzteZeile_WB
If bolActivate = True Then .Activate
If .Cells(lngRow, 8)  Empty Then
varName = .Cells(lngRow, 3).Value
'Lokalisierung der Component-Namen und Daten'
deldate = .Cells(lngRow, 8).Value
'Suche und Lokalisierung des Datenpaars Comp/exdate'
With wksTermine
If bolActivate = True Then .Activate
'Name
Set rngGefunden = .Cells.Find(What:=varName, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
'              Set rngGefunden = .Columns(2).Find(What:=varName, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox varName & " im Blatt Termine nicht gefunden!"
Else
y = rngGefunden.Row
'Required from TGNPO'
Set rngGefunden = .Cells.Find(What:=deldate, LookIn:=xlValues, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
'                Set rngGefunden = .Rows(1).Find(What:=deldate, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox deldate & " im Blatt Termine nicht gefunden!"
Else
x_tgnpo = rngGefunden.Column
.Cells(y, x_tgnpo).Interior.ColorIndex = 27
End If
End If
End With
End If
Next
'"Design confirmend"'
For lngRow = 5 To LetzteZeile_WB
If bolActivate = True Then .Activate
If .Cells(lngRow, 9)  Empty Then
varName = .Cells(lngRow, 3).Value
'Lokalisierung der Component-Namen und Daten
pldate = .Cells(lngRow, 9).Value
'Suche und Lokalisierung des Datenpaars Comp/exdate
With wksTermine
If bolActivate = True Then .Activate
'Name
Set rngGefunden = .Cells.Find(What:=varName, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox varName & " im Blatt Termine nicht gefunden!"
Else
y = rngGefunden.Row
'Expected Date
Set rngGefunden = .Cells.Find(What:=pldate, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox pldate & " im Blatt Termine nicht gefunden!"
Else
x_pl = rngGefunden.Column
.Cells(y, x_pl).Interior.ColorIndex = 32
End If
End If
End With
End If
Next
'übertragen aller "Final approved"'
For lngRow = 5 To LetzteZeile_WB
If bolActivate = True Then .Activate
If .Cells(lngRow, 10)  Empty Then
varName = .Cells(lngRow, 3).Value
'Lokalisierung der Component-Namen und Daten
deldate = .Cells(lngRow, 10).Value
'Suche und Lokalisierung des Datenpaars Comp/exdate
With wksTermine
If bolActivate = True Then .Activate
'Name
Set rngGefunden = .Cells.Find(What:=varName, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox varName & " im Blatt Termine nicht gefunden!"
Else
y = rngGefunden.Row
'Approved Date
Set rngGefunden = .Cells.Find(What:=deldate, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
If rngGefunden Is Nothing Then
MsgBox deldate & " im Blatt Termine nicht gefunden!"
Else
x_del = rngGefunden.Column
.Range(.Cells(y, 2), .Cells(y, 159)).Interior.ColorIndex = 48
.Cells(y, 2).Font.ColorIndex = 2
.Cells(y, 3).Font.ColorIndex = 2
End If
End If
End With
End If
Next
End With
wksTermine.Activate
Application.ScreenUpdating = True
End Sub


Anzeige
AW: Zellen suchen - finden - formatieren
04.02.2009 11:47:00
nicobit
Hallo Franz
Vielen Dank für die ausführliche Antwort!
Habe das ganze mal für mich durchdacht und bin begeistert wie "einfach" es geht - wenn man weiss wie...
Ist mein erstes grösseres VBA Projekt. Deshalb noch würde ich gerne noch etwas nachfragen:

Const bolActivate = False 'wenn True, dann werden die Blätter beim Ablauf jeweils _
aktiviert. Nur zum Testen im Schrittmodus auf True einstellen!


was macht dieser Befehl genau? resp. ist er notwendig? Ich habe mal alles ohne diese "bolactive" befehle durchrattern lassen und es hat auch tiptop funktioniert.
Ja noch einmal vielen Dank für den Input... jetzt gehts bedeutend leichter...
Schöne Tag us der schöne Schwiez :)
Gruss Nicolas

Anzeige
AW: Zellen suchen - finden - formatieren
04.02.2009 13:06:01
fcs
Hallo Nicolas,
wie geschrieben ist dieser Wert nur zum Testen relevant, wenn man nachvollziehen will, was sich in den beiden Blättern jeweils tut, bzw. welche Information gerade verarbeitet wird.
Er wirkt sich in den Zeilen
If bolActivate = True Then .Activate
aus. Wenn du die Konstanten-Deklaration weglässt, dann kannst du auch diese Zeilen weglassen.
Grüsse aus dem Bayrischen Flachland (Vor-Spessart) in die Schweiz
Franz

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige