Re: Warum kann ich keine Zelle farbig markieren
24.05.2002 10:39:11
sven
Sodele, hier ist der gesamte Code :-))In der Zeile IF Count > p , ab da fängt mein Problem an.Es sollen alle Zellen in der zweiten Tabelle gefärbt werden, die sich von der ersten Tabelle unterscheiden, wenn diese ergänzt werden.Naja, nun ist das ganz ein bissl komplizierter, aber ich komme da einfach nicht weiter
Ich hoffe ma du findest Dich zurecht
Sub profilösung_vergleich2()
'
'
'
Dim i, p, a, q, z, sap, u, n, m, privat, count, count2 As Integer
Dim x, g As String
a = 2 ' i beschreibt die Zelle in der man sich gerade befindet. In diesem Fall am Tabellenanfang der Tabelle 2 .Zeile 2
i = 2 ' i beschreibt die Zelle in der man sich gerade befindet. In diesem Fall am Tabellenanfang der Tabelle 1 .Zeile 2
sap = 1 / 2 ' Der Wert sap wird auf 1 gesetzt, damit die erste Bedingung erfüllt ist. Dieser Wert beschreibt ansonsten den Wert der Personalnummern
count = 0 ' Ist ein Zähler, der die Versuche zählt, bis die Personr. identisch sind.
p = 0 ' p ist ein Zähler, der das Ende der zweiten Tabelle bestimmen soll, an das dann die nicht identifizierbaren Datensätze hintendran gehängt werden
z = 2
q = 2
Do While Worksheets("Tabelle1").Range("A" & z) = 0 ' das ist ein Zähler, den ich eingebaut habe um die Variable i genau zu bestimmen, da die erste personalnummer der tabelle1 nicht immer genau in der 2. zelle steht.
z = z + 1 ' nach jedem durchgang wird z um eins erhöht, und demnach i auch
Loop
i = z
Do While Worksheets("Tabelle2").Range("A" & q) = 0 ' das ist ein Zähler, den ich eingebaut habe um die Variable a genau zu bestimmen, da die erste personalnummer der tabelle2 nicht immer genau in der 2. zelle steht.
q = q + 1 ' nach jedem durchgang wird q um eins erhöht, und demnach a auch
Loop
a = q
p = q
Do While Worksheets("Tabelle2").Range("A" & p) > 0 ' p ist die anzahl der zellenj vom anfang der tabelle bis zum ende
p = p + 1
Loop
'MsgBox p
count2 = p ' Das ist der Zähler für nicht vorhandene Personalnummern. Die Datensätze werden ab dem Ende der Tabelle hinzugefügt. Hier ab Zelle 11
Do While sap > 0 ' Wiederhole die Schleife solange, bis der wert sap > 0 ist, da das Ende der Tabelle mit einer leeren Zelle mit dem Wert 0 gekennzeichnet ist
If privat = 0 Then a = q ' wenn der wert der Zelle privat in der zweiten Tabelle 0 ist, d.h. wenn diese leer ist und somit die Tabelle endet, muss ich wieder nach oben gehen an den Anfang gehn, um vergleichen zu können
If count > p Then ' Ich habe hier einen Zähler eingefügt,für den Fall, dass eine Personalnummer nicht vorhanden ist
'wenn der zähler größer als p ist, dann
x = "B" & i 'gehe zu Tabelle eins, dann gehe in die spalte B und das Feld i
g = "K" & i ' und gehe zur Spalte K mit dem Zusatz i
u = "A" & i
m = "M" & count2
n = "V" & count2
' Workbooks.Open FileName:="\\RM2MS000052\U_behlings$\data\externeTABELLE.xls"
' Sheets("Tabelle2").Select
' Sheets("Tabelle2").Select
' Range("A1").Interior.ColorIndex = 2 ' für weiß
Worksheets("Tabelle1").Range(x, g).Copy _
Destination:=Worksheets("Tabelle2").Range("M" & count2)
Worksheets("Tabelle1").Range(u).Copy _
Destination:=Worksheets("Tabelle2").Range("A" & count2)
Sheets("Tabelle2").Range("M1").Interior.ColorIndex = 3
' Kopiere die informationen von dem intervall x und g, und
'füge diese an die tabelle2 an Spalte M hinzu in der Zelle count2
count2 = count2 + 1 ' count2 ist ein Zähler, den ich eingebaut habe, damit, falls mehrere Personalnummern nicht verglichen werden können,
'nicht alle nicht vorhandenen Personalnummern an der selbe Stelle hinzugefügt werden, sondern immer eine Zeile tiefer
i = i + 1 ' Wenn ich einen Datensatz hinzugefügt habe, muss ich in der Tabelle 1 eine Zeile tiefer, damit ich die nächste Personalnummern mit den in der Tabelle 2 vergleichen kann
count = 0 ' wenn ein neues element kommt, dann muss der zähler count auf null gesetzt werden, da sonst beim nächsten versuch eine andere personalnummer einer anderen zuzuweisen, diese schon vorbelastest wäre, d.h. wenn 2 Personr. vorhanden sind, und ich aber jedesmal 5 versuche
' brauche um diese zu finden, dann würde die P.Nr als nicht gefunden als Datensatz in der 2.Tabelle hinzugefügt werden
End If
Sheets("Tabelle2").Select
' für die nachfolgenden Variable wird die Tabelle 2 ausgesucht
privat = Range("a" & a).Value2
' die variable privat ist der wert der in der zelle a1 steht
MsgBox sap & " wird verglichen mit " & privat ' gibt den wert der zelle a wieder, wo sich sap befindet und der wert der zelle privat die mit sap verglichen wird, für bessere Übersichtlichkeit
If sap = privat Then
' nur wenn sap=privat ( d.h. der Wert der Zelle der Personalnummer in Tabelle 1 identisch mit der in Tabelle 2 ist, dann gilt folgender prozess
x = "B" & i ' x ist Tabelle eins, Spalte B mit der Zellennummer i
g = "K" & i ' g ist Tabelle eins, Spalte K mit der Zellennummer i
Sheets("tabelle1").Select ' wählt die Tabelle eins aus um folgende Daten zu markieren
Worksheets("Tabelle1").Range(x, g).Copy _
Destination:=Worksheets("Tabelle2").Range("M" & a)
'Hier wird nun wieder die Informationen des Intervalls von x und g markiert und kopiert und in der 2ten Tabelle an die Spalte M in der Zelle a hinzugefügt
a = a + 1 ' da die jetzige Zelle a in der Tabelle2 gerade gefüllt wurde, muss ich in die nächste Zelle, als eine "höher"
i = i + 1 ' die Personalnummer war ja identisch, also gehe ich hier zur nächsten Personalnummer in der Tabelle 1
count = 0 ' der Zähler count wird hier wieder auf null gesetzt, damit alle PNummern mit der in der zweiten zweiten Tabelle verglichen werden kann.in diesem Fall 10 mal
Else
a = a + 1 ' wenn die sap=privat anweisung nicht erfüllt ist, dann gehe in die nächste Zeile in Tabelle 2 und vergleiche diesen Wert, deshalb erhöhe a
count = count + 1
End If ' Ende der If sap = privat Anweisung
Sheets("Tabelle1").Select
sap = Range("A" & i).Value2
' der variablen sap wird der wert, der in der zelle
' a1 auf blatt 1 ist zugewiesen
Loop ' Das ist das Ende der Do While....Loop Anweisung
Sheets("tabelle2").Select ' Um sich das Ergebnis direkt anzugucken, ist es sinnvoll in die Tabelle 2 zu gehn
End Sub ' Ende des Programms