AW: Code in Code integrieren
04.07.2007 17:36:52
Chaos
Servus,
jetzt nochmal langsam, gehen wir den Code mal durch:
Private Sub CommandButton2_Click()
Dim inta As Integer
Set frm = UserForm2
Sheets("Tabelle1").Activate
With frm
Cells(223, 1).Value = .TextBox1.Value ' hier werden die Werte eingegeben
Cells(223, 2).Value = .TextBox2.Value
Cells(223, 3).Value = .TextBox3.Value
Cells(214, 2).Value = .TextBox4.Value
End With
Sheets("Kosten nach Gewerken").Visible = True
Sheets("Kosten nach Gewerken").Select ' hier kommt dann Sheets..., warum auch immer, bitte Erklä _
rung
For Each TextBox In UserForm2.Controls ' ab hier wird kontrolliert, ob alle Werte eingegeben _
sind und die Eingabe verlassen
If TextBox = "" Then
MsgBox "Es sind ein oder mehrere Felder nicht ausgefüllt!", vbOKOnly + vbCritical, " _
Eingabefehler"
Exit Sub
ElseIf TextBox = "0" Then ' hier dasselbe Spiel
MsgBox "Nette Idee aber leider NEIN, denn durch 0 kann man nicht teilen!", vbOKOnly + _
vbCritical, "Eingabefehler"
Exit Sub
End If
Next TextBox
Sheets("Tabelle1").Visible = True
Sheets("Tabelle1").Select ' hier sind wir wieder bei Tabelle1
If Cells(210, 2) = "0" Then ' Hier wird geprüft ob 210 = 0, wenn ja dann die MsgBox, wenn nein ( _
alle Werte richtig), dann geht das Makro zur Else-Anweisung
Sheets("Tabelle1").Visible = xlVeryHidden
Sheets("Kosten nach Gewerken").Activate
MsgBox "Es sind noch keine Kosten in der KG 300/400 erfasst!", vbOKOnly + vbCritical, " _
Eingabefehler"
UserForm2.Hide
WENN ALLE EINGABEN i.O. SIND DANN MACHE!
AN DIESE STELLE MÜSSTE JETZT DIE GESCHICHTE MIT DEM "IF A6=1 THEN.....IF A6=2 THEN... USW.
UND WENN DAS GEMACHT IST DANN MACHE UNTEN WEITER
Else
UserForm2.Hide
' also hierhin, somit muss das Reinschreiben eigentlich hierher
Sheets("Kosten nach Gewerken").Activate
Sheets("Tabelle1").Visible = xlVeryHidden
inta = MsgBox("Die Daten wurden in die Datenbank übernommen und stehen bei der nächsten _
Berechnung zu Verfügung!", vbOKOnly + vbInformation, "Erfolgreiche Eingabe")
End If
End Sub
also, dann so:
Private Sub CommandButton2_Click()
Dim inta As Integer
Set frm = UserForm2
Sheets("Tabelle1").Activate
With frm
Cells(223, 1).Value = .TextBox1.Value ' hier werden die Werte eingegeben
Cells(223, 2).Value = .TextBox2.Value
Cells(223, 3).Value = .TextBox3.Value
Cells(214, 2).Value = .TextBox4.Value
End With
Sheets("Kosten nach Gewerken").Visible = True
Sheets("Kosten nach Gewerken").Select ' hier kommt dann Sheets..., warum auch immer, bitte Erklä _
rung
For Each TextBox In UserForm2.Controls ' ab hier wird kontrolliert, ob alle Werte eingegeben _
sind und die Eingabe verlassen
If TextBox = "" Then
MsgBox "Es sind ein oder mehrere Felder nicht ausgefüllt!", vbOKOnly + vbCritical, " _
Eingabefehler"
Exit Sub
ElseIf TextBox = "0" Then ' hier dasselbe Spiel
MsgBox "Nette Idee aber leider NEIN, denn durch 0 kann man nicht teilen!", vbOKOnly + _
vbCritical, "Eingabefehler"
Exit Sub
End If
Next TextBox
Sheets("Tabelle1").Visible = True
Sheets("Tabelle1").Select ' hier sind wir wieder bei Tabelle1
If Cells(210, 2) = "0" Then ' Hier wird geprüft ob 210 = 0, wenn ja dann die MsgBox, wenn nein ( _
alle Werte richtig), dann geht das Makro zur Else-Anweisung
Sheets("Tabelle1").Visible = xlVeryHidden
Sheets("Kosten nach Gewerken").Activate
MsgBox "Es sind noch keine Kosten in der KG 300/400 erfasst!", vbOKOnly + vbCritical, " _
Eingabefehler"
UserForm2.Hide
Else
UserForm2.Hide
' also hierhin, somit muss das Reinschreiben eigentlich hierher
Dim zeile As Integer, s As Integer, a As Integer, b As Integer
Application.ScreenUpdating = False 'Auschalten Bildschirmaktualisierung
Select Case Range("A6").Value
Case 1:
If Sheets("Tabelle1").Range("B45").Value = "" Then ' Schauen, ob letzte zeile in diesem _
Bereich frei
For zeile = 10 To 45 ' bereich für 1 in der (Zeile 10 - 45)
If Sheets("Tabelle1").Cells(zeile, 6).Value "" Then ' Abfrage, ob Zellen leer _
sind
s = Sheets("Tabelle1").Cells(zeile, 6).Row ' zellenindex
Sheets("Tabelle1").Cells(zeile, 11).Value = Sheets("Tabelle1").Cells(zeile - _
1, 11).Value + Sheets("Tabelle1").Cells(zeile, 6).Value ' _
Summenbildung wert K(zeile -1) + Wert in F(zeile)
Sheets("Tabelle1").Cells(zeile, 12).Value = Sheets("Tabelle1").Cells(zeile - _
1, 12).Value + Sheets("Tabelle1").Cells(zeile, 7).Value ' u.s.w für _
die anderen werte nebendran
Sheets("Tabelle1").Cells(zeile, 13).Value = Sheets("Tabelle1").Cells(zeile - _
1, 13).Value + Sheets("Tabelle1").Cells(zeile, 8).Value
Sheets("Tabelle1").Cells(zeile, 14).Value = Sheets("Tabelle1").Cells(zeile - _
1, 14).Value + Sheets("Tabelle1").Cells(zeile, 9).Value
Sheets("Tabelle1").Cells(zeile, 15).Value = Sheets("Tabelle1").Cells(zeile - _
1, 15).Value + Sheets("Tabelle1").Cells(zeile, 10).Value
End If
Next zeile
s = s + 1 ' erste freie Zelle , zeilen index
Sheets("Tabelle1").Range("B214:J214").Copy
Sheets("Tabelle1").Range("B" & s).PasteSpecial Paste:=xlValues ' kopieren von B214: _
j214 nach erste freie _
Zelle in B
Sheets("Tabelle1").Cells(s, 11).Value = Sheets("Tabelle1").Cells(s - 1, 11).Value + _
Sheets("Tabelle1").Cells(s, 6).Value ' summenbildung für freie zeile, _
analog zu oben
Sheets("Tabelle1").Range("F" & s & ":" & "H" & s).NumberFormat = "#,##0.00 $"
Range("B" & s).Select
Else
MsgBox ("Liste ist voll!")
Application.ScreenUpdating = True
Exit Sub
End If
Case 2:
If Sheets("Tabelle1").Range("B87").Value = "" Then ' Schauen, ob letzte zeile in diesem _
Bereich frei
For zeile = 52 To 87
If Sheets("Tabelle1").Cells(zeile, 6).Value "" Then ' Abfrage, ob Zellen leer _
sind
s = Sheets("Tabelle1").Cells(zeile, 6).Row ' zellenindex
Sheets("Tabelle1").Cells(zeile, 11).Value = Sheets("Tabelle1").Cells(zeile - _
1, 11).Value + Sheets("Tabelle1").Cells(zeile, 6).Value ' _
Summenbildung wert K(zeile -1) + Wert in F(zeile)
Sheets("Tabelle1").Cells(zeile, 12).Value = Sheets("Tabelle1").Cells(zeile - _
1, 12).Value + Sheets("Tabelle1").Cells(zeile, 7).Value ' u.s.w für _
die anderen werte nebendran
Sheets("Tabelle1").Cells(zeile, 13).Value = Sheets("Tabelle1").Cells(zeile - _
1, 13).Value + Sheets("Tabelle1").Cells(zeile, 8).Value
Sheets("Tabelle1").Cells(zeile, 14).Value = Sheets("Tabelle1").Cells(zeile - _
1, 14).Value + Sheets("Tabelle1").Cells(zeile, 9).Value
Sheets("Tabelle1").Cells(zeile, 15).Value = Sheets("Tabelle1").Cells(zeile - _
1, 15).Value + Sheets("Tabelle1").Cells(zeile, 10).Value
End If
Next zeile
s = s + 1 ' erste freie Zelle , zeilen index
Sheets("Tabelle1").Range("B214:J214").Copy
Sheets("Tabelle1").Range("B" & s).PasteSpecial Paste:=xlValues ' kopieren von B214: _
j214 nach erste freie _
Zelle in B
Sheets("Tabelle1").Cells(s, 11).Value = Sheets("Tabelle1").Cells(s - 1, 11).Value + _
Sheets("Tabelle1").Cells(s, 6).Value ' summenbildung für freie zeile, _
analog zu oben
Sheets("Tabelle1").Range("F" & s & ":" & "H" & s).NumberFormat = "#,##0.00 $"
Range("B" & s).Select
Else
MsgBox ("Liste ist voll!")
Application.ScreenUpdating = True
Exit Sub
End If
End Select
Application.ScreenUpdating = True
Sheets("Kosten nach Gewerken").Activate
Sheets("Tabelle1").Visible = xlVeryHidden
inta = MsgBox("Die Daten wurden in die Datenbank übernommen und stehen bei der nächsten _
Berechnung zu Verfügung!", vbOKOnly + vbInformation, "Erfolgreiche Eingabe")
End If
End Sub
Ich hoffe, das war's jetzt.
Jetzt macht das Makro bei Eingabe aller Werte auch die Preise u.s.w. das Kopieren und zwar, wenn du in Userform auf In dieDatenbank drückst.
Ich denke, dass du das wolltest, wenn nicht, dann versteh ich 's auch nimmer. Für 3 und 4 mussst du nur den teilcode kopieren und unten dran setzten und die Zeilen anpassen:
Case 2: ' hier 3 oder 4 schreiben
If Sheets("Tabelle1").Range("B87").Value = "" Then ' Schauen, ob letzte zeile in diesem Bereich frei
For zeile = 52 To 87 ' hier die Zeilen von Bereich 3 oder 4, vgl. oben
If Sheets("Tabelle1").Cells(zeile, 6).Value "" Then ' Abfrage, ob Zellen leer sind
s = Sheets("Tabelle1").Cells(zeile, 6).Row ' zellenindex
Sheets("Tabelle1").Cells(zeile, 11).Value = Sheets("Tabelle1").Cells(zeile - 1, 11).Value + Sheets("Tabelle1").Cells(zeile, 6).Value ' _
Summenbildung wert K(zeile -1) + Wert in F(zeile)
Sheets("Tabelle1").Cells(zeile, 12).Value = Sheets("Tabelle1").Cells(zeile - 1, 12).Value + Sheets("Tabelle1").Cells(zeile, 7).Value ' u.s.w für _
die anderen werte nebendran
Sheets("Tabelle1").Cells(zeile, 13).Value = Sheets("Tabelle1").Cells(zeile - 1, 13).Value + Sheets("Tabelle1").Cells(zeile, 8).Value
Sheets("Tabelle1").Cells(zeile, 14).Value = Sheets("Tabelle1").Cells(zeile - 1, 14).Value + Sheets("Tabelle1").Cells(zeile, 9).Value
Sheets("Tabelle1").Cells(zeile, 15).Value = Sheets("Tabelle1").Cells(zeile - 1, 15).Value + Sheets("Tabelle1").Cells(zeile, 10).Value
End If
Next zeile
s = s + 1 ' erste freie Zelle , zeilen index
Sheets("Tabelle1").Range("B214:J214").Copy
Sheets("Tabelle1").Range("B" & s).PasteSpecial Paste:=xlValues ' kopieren von B214:j214 nach erste freie _
Zelle in B
Sheets("Tabelle1").Cells(s, 11).Value = Sheets("Tabelle1").Cells(s - 1, 11).Value + Sheets("Tabelle1").Cells(s, 6).Value ' summenbildung für freie zeile, _
analog zu oben
Sheets("Tabelle1").Range("F" & s & ":" & "H" & s).NumberFormat = "#,##0.00 $"
Range("B" & s).Select
Else
MsgBox ("Liste ist voll!")
Application.ScreenUpdating = True
Exit Sub
End If
Gruß
Chaos