Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige