Verkürzung der VBA-Lösung - Teil 3
02.07.2005 22:42:51
ILka
mit der im Dateianhang dargestellten VBA-Lösung wird ein Kostenbericht automatisch erstellt. Die VBA-Lösung funktioniert bereits, nur ist der Teil 3 der Programmierung sehr umfangreich und lässt sich mit Sicherheit noch zusammenfassen. Ich suche insbesondere eine Schleifenlösung für die Bearbeitung der einzelnen Kostenstellen im Teil 3.
Danke im voraus und Gruß
Ilka
Nachfolgend ist der Teil 3 dargestellt:
'Teil 3
' Übertragung der Werte auf die einzelnen Tabellenblätter
Dim zelle As Integer
Dim y As Integer
'Kostenstelle 1
'Blatt Kostenstelle 1 aktivieren
Worksheets("1").Activate
'Spalte für Monat berechnen
zelle = 4 + Monat.Text
'Schleife für Übertragung der Werte für jede Zeile
For y = 7 To 163
'Auswahl des aktuellen Feldes
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
'SVERWEIS Formel mit Fehlerabfrage #NV verschwindet
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C6:C7,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C6:C7,2,FALSE))"
'Kopieren der Zelle
Selection.Copy
'Nur Zellwert wird in dieselbe Zelle wieder eingefügt
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Autofilter wird auf Summenansicht zurückgesetzt
Selection.AutoFilter Field:=1, Criteria1:="1"
'Auswahl der Kostenstelle-Zelle (OPTIK!!!)
Cells(2, 5).Select
End If
Next y
'Kostenstelle 2
Worksheets("2").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C8:C9,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C8:C9,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 11
Worksheets("11").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C10:C11,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C10:C11,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 12
Worksheets("12").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C12:C13,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C12:C13,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 21
Worksheets("21").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C14:C15,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C14:C15,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 22
Worksheets("22").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C16:C17,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C16:C17,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 31
Worksheets("31").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C18:C19,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C18:C19,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 32
Worksheets("32").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C20:C21,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C20:C21,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 41
Worksheets("41").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C22:C23,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C22:C23,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 51
Worksheets("51").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C24:C25,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C24:C25,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 60
Worksheets("60").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C26:C27,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C26:C27,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 61
Worksheets("61").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C28:C29,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C28:C29,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 62
Worksheets("62").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C30:C31,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C30:C31,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
'Kostenstelle 63
Worksheets("63").Activate
zelle = 4 + Monat.Text
For y = 7 To 163
Cells(y, zelle).Select
If (ActiveCell.Offset(0, -(zelle - 1)) = 2) Then
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC3,'Kosten'!C32:C33,2,FALSE)),"""",VLOOKUP(RC3,'Kosten'!C32:C33,2,FALSE))"
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.AutoFilter Field:=1, Criteria1:="1"
Cells(2, 5).Select
End If
Next y
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Datei mit der integrierten VBA-Lösung:
https://www.herber.de/bbs/user/24417.zip
Datei Kst ausführlich 052005 zur Erstellung des Monatsberichtes 05/2005
(wird zur Ausführung des Programmes benötigt):
Die Datei https://www.herber.de/bbs/user/24418.zip wurde aus Datenschutzgründen gelöscht