Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Jede Zeile abwechselnd eine 1 oder 2 schreiben

Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 09:05:16
Marc
Guten Morgen,
Ich erstelle gerade ein Sheet zur Schichteinteilung, dazu hat meine Userform 2 Comboboxen. Combobox1 für die Namen, die zweite für die Schichteinteilung.
die zweite wird gefüllt mit
- nur Früh
- nur Spät
- Gerade KW Spät
- Ungerade KW Spät
nur Früh und Spät funktioniert soweit. Mein Problem liegt in Gerade und Ungerade :/
Der Code läuft zwar durch aber er braucht verdammt lange und er erkennt die Prüfung nicht, also ob 1 oder 2 in der .Range("E12:E70") steht.
Geht ihr da ne bessere Lösung? Danke schon mal und schönes WE
Gruß
Private Sub CommandButton1_Click()
Dim rngBer As Range, rngC As Range
With Sheets("Schichteinteilung")
For i = 12 To 70
If ComboBox2.Value = "nur Frühschicht" Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 1
Else
End If
If ComboBox2.Value = "nur Spätschicht" Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 2
Else
End If
If ComboBox2.Value = "Gerade KW Spät" Then
Set rngBer = .Range("E12:E70")
For Each rngC In rngBer
If rngC.Value = 2 Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 2
ElseIf rngC.Value = 1 Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 1
End If
Next
End If
Next
End With
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 09:25:13
fcs
Hallo Marc,
Geschwindigkeit:
Wahrscheinlich werden beim Eintragen der Werte durch durch das Makro ständig Neuberechnungen durchgeführt.
Schalte den Berechnungsmodus zu Beginn de Makros auf manuell
Application.Calculation = xlCalculationManual
und am Ende wieder auf Automatisch.
Problem Zahlenvergleich:
Evtl. stehen die Zahlen als Text in den Zellen des Bereichs E12:E70, bzw. der Bereich hat Zahlenformat "Text".
Ersetze mal
rngC.Value
durch
Val(rngC.Value)
Gruß
Franz

AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 09:37:05
Marc
Hey,
also dank schon mal für den Tip mit der Berechung ausschalten!! Ist um ein Vielfaches Besser.
BEi der Prüfung gab es leider kein Erfolg, es wird immer die 2 eingetragen :/

Anzeige
AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 10:16:35
Marc
OKay also ich hab jetzt mal etwas rumgespielt und ich glaube das Problem ist das er nicht jede Zeile prüft. Er schreibt manchmal in die erste Zeile eine 1 und dann drauf im ganzen BEreich eine 2 :/
Komisch... ich verwende den Code wo anderes auch und da läuft er ohne Probleme

AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 10:43:09
Marc
Ich habs :D
Der Fehler war hier:
Set rngBer = .Cells(i, 5)
Danke für deine Hilfe!!
Gruß und schönes WE

AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 10:46:54
fcs
Hallo Marc,
irgendwie ist die Prüflogik für den Fall "Gerade KW Spät" nicht korrekt. Der Wert, der in der Zeile i eingetragen wird, richtet sich immer nach dem Wert in Zelle E70, denn das ist immer die letzte Zelle, die verglichen wird. Steht dort eine 1 wird überall eine 1 eingetragen, steht dort eine 2 dann überall eine 2.
Ich würde es mal folgendermaßen probieren. Ich hab dabei die Prüfungen in eines etwas überischtlichere Forme gebracht.
Gruß
Franz
Private Sub CommandButton1_Click()
Dim rngBer As Range, rngC As Range, i As Long
Dim wksSchicht As Worksheet
Set wksSchicht = Sheets("Schichteinteilung")
Application.Calculation = xlCalculationManual
With wksSchicht
For i = 12 To 70
'With .Cells(i, Rows(1).Find(ComboBox1).Column)
With .Cells(i, .Rows(1).Find(ComboBox1).Column)  'korrekter Bezug für Rows(1)  ?
Select Case ComboBox2.Value
Case "nur Frühschicht"
.Value = 1
Case "nur Spätschicht"
.Value = 2
Case "Gerade KW Spät"
Select Case wksSchicht.Cells(i, 5).Value 'Wert in Spalte E
Case 2
.Value = 2
Case 1
.Value = 1
End Select
End Select
End With
Next
End With
Application.Calculation = xlCalculationAutomatic
End Sub

Anzeige
AW: Jede Zeile abwechselnd eine 1 oder 2 schreiben
04.04.2014 10:57:57
Rudi
Hallo,
       For Each rngC In rngBer
If rngC.Value = 2 Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 2
ElseIf rngC.Value = 1 Then
.Cells(i, Rows(1).Find(ComboBox1).Column) = 1
End If
Next

kann auch was anderes als 1 oder 2 drin stehen?
Wenn nicht, kannst du dir die Prüfung schenken.
       For Each rngC In rngBer
.Cells(i, Rows(1).Find(ComboBox1).Column) = rngC
Next

Außerdem kann man das dahin optimieren, dass du nicht 59 mal den Inhalt der CBx abfragst.
Wie ich deinen Code verstehe, sollte das auch so gehen:
Private Sub CommandButton1_Click()
Dim rngBer As Range, rngC As Range
Select Case ComboBox2
Case "nur Frühschicht"
With Sheets("Schichteinteilung")
.Cells(12, Rows(1).Find(ComboBox1).Column).Resize(59) = 1
End With
Case "nur Spätschicht"
With Sheets("Schichteinteilung")
.Cells(12, Rows(1).Find(ComboBox1).Column).Resize(59) = 2
End With
Case "Gerade KW Spät"
With Sheets("Schichteinteilung")
Set rngBer = .Range("E12:E70")
For Each rngC In rngBer
Select Case rngC
Case 1, 2
.Cells(12, Rows(1).Find(ComboBox1).Column).Resize(59) = rngC
End Select
Next
End With
End Select
End Sub

Was ist mit Ungerade KW spät?
Gruß
Rudi
Anzeige

33 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige