AW: SUMMEWENN in SumIf
23.02.2004 14:40:21
Alex K.
Hallo Andre,
zwar immer noch schlecht erklärt, aber ich habe es kapiert :-)
Ersetze die Prozedur "CommandButton1_Click()" im Forumlar mit dieser
Private Sub CommandButton1_Click()
Dim dat1 As Date, dat2 As Date
Dim z As Integer
Dim z2 As Integer
Dim sp As Integer
Dim r As Variant
Dim ut As Double
Dim Mit As String
Dim mitRng As Range
Dim t As Integer
Dim Grundplan1
dat1 = Me.ComboBox2
dat2 = Me.ComboBox3
Mit = Me.ComboBox1
Worksheets("Tabelle1").Activate
Application.ScreenUpdating = False
z = 2 '<<<<<< ab Zeile 2
Do While Cells(z, 1) <> dat1
z = z + 1
Loop
z2 = 1
Do While Cells(z2, 1) <> dat2
z2 = z2 + 1
Loop
sp = 2
Do While Cells(1, sp) <> Mit
sp = sp + 1
Loop
For r = z To z2
Cells(r, 1).Select
Cells(r, sp) = "U"
'wird nicht mehr benötigt, da Rechnung auf Grund der tatsächlichen
'Arbeitstage errechnet wird
'ut = ut + 1
With Worksheets("Grundplan1")
'Mitarbeiter-Spalte in Grundplan1 suchen
Set mitRng = .Range("B1:AM1").Find(ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole)
If mitRng Is Nothing Then
MsgBox "Der Mitarbeiter '" & ComboBox1.Value & "' wurde im Grundplan1 " _
& "nicht gefunden.", vbExclamation, "Urlaub eintragen"
Exit Sub
End If
'es wird davon ausgegangen, dass Datum in Tabelle1 und Grundplan1 identisch
'sind und in der gleichen Zeile beginnen
ut = WorksheetFunction.CountIf(.Range(.Cells(z, mitRng.Column), _
.Cells(z2, mitRng.Column)), 1)
End With
Next r
TextBox3 = ut & " Tage"
'Activate ist nicht notwendig, da direkt auf die Tabelle
'zugegriffen werden kann. Sie muss vorher nicht expliziet
'aktiviert werden. Zum Zugriff direkt über das Objekt ist folgende
'Syntax nötig: Worksheets("Url_Tab1").Cells(t, 1) oder wenn vorher
'ein With Worksheets("Url_Tab1") gesetzt wird, dann direkt über
'.Cells(t, 1)
With Worksheets("Url_Tab1")
t = .Range("A65536").End(xlUp).Row + 1
.Cells(t, 1) = ComboBox1.Value
.Cells(t, 3) = ComboBox2.Value
.Cells(t, 5) = ComboBox3.Value
.Cells(t, 6) = TextBox3.Value
End With
Application.ScreenUpdating = True
End Sub