Ist es möglich Schleife zu verkürzen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Ist es möglich Schleife zu verkürzen von: Peter W
Geschrieben am: 02.04.2005 12:00:06

Servus,

hab mit meinen minimalen Kenntnissen unten gepostete Schleife geschrieben.
Zweck ist das er überprüft ob die Zeile in sheet("DB").Range("C") leer ist und dann in einem anderen Sheet("Monatsplanung").range("C" Zeile ab 7) einträgt wenn nicht leer. Das funktioniert auch gut.
Mein Problem ist nur das er von Spalte B bis Z das überprüfen und eintragen müsste und das wird dann ein ellenlanger Code da vorher auch schon ein ziemlicher langer Code steht. Könnte man das irgendwie verkürzen ?
Für Anregungen bin ich Dankbar.


Sub test()
a = Sheets("Monatsplanung").Range("c117")
c = Sheets("Monatsplanung").Range("c118")
x = 6
For i = a To c
x = x + 1
If Sheets("DB").Range("c" & i) <> 0 Then
bwert = "belegt"
Sheets("Monatsplanung").Range("c" & x).Select
ActiveCell.FormulaR1C1 = bwert
Else
bwert = 0
End If
Next i
End Sub


MfG
Peter
Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Hajo_Zi
Geschrieben am: 02.04.2005 12:04:24

Hallo Peter,

auf die schnell fällt mir ein das in VBA zu 99% auf select verzichtet werden kann.
Warum trägst Du Text als Formel ein?

Sheets("Monatsplanung").Range("c" & x).value ="belegt"


Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.




Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Peter W
Geschrieben am: 02.04.2005 12:10:03

Servus Hajo,

danke erstmal für die antwort. Möchte aber nochmals auf mein Level verweisen ;)
Und ich froh bin das es überhaupt funktioniert hat.
Werd deine Zeile mal Testen. Danke erstmal

MfG
Peter


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Hajo_Zi
Geschrieben am: 02.04.2005 12:16:29

Hallo Peter,

bei bestimmten Namen schaue ich nicht nach dem Level.
Das Problem mit dem Namen "PeterW"; "Peter W" hatten wir ja schon mal im Forum.

Ich habe mir Deinen Code nicht intensi angesehe. So ganz klar ist mir auch nicht was der machen soll. Vielleicht solltest Du mal eine Datei hochladen. Vielleicht wird es damit klarer.

Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Peter W
Geschrieben am: 02.04.2005 12:33:29

Servus Hajo,

Ich hab die Datei mal aufn Server gepackt, verschiedene Funktionen sind fehlerhaft da nur 2 Blätter von 12. Aber die um die es geht sind drauf. (UserForm1 - Monat speichern)
https://www.herber.de/bbs/user/20521.xls

Nochmal zur exakteren Erklärung:
Der Monat in der Monatsplanung soll als extra Sheet ausgelagert werden (klappt)
Die Werte die bereits in den Monat in der DB eingetragen sind, sollen in der Monatsplanung erscheinen (der Monat in der Monatsplanung wird auf +1 gestellt Bsp: März -Monat wird gespeichert- April,usw.)

Danke
Peter


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Hajo_Zi
Geschrieben am: 02.04.2005 13:02:52

Hallo Peter

so ganz klar ist mir das nicht. Teste es mal einer testdatei, mir ist nicht klar ob ich die BBezüge richtig gesetzt habe. Bei mir kam auch andauernd Meldungen über Verknüpfungen. Ich habe jetzt nur den einen Teil angesehen.
Option Explicit


Private Sub CommandButton4_Click()
    Dim Monatswert As Integer
    Dim neumwert As Integer
    Dim X As Integer
    Dim I As Integer
    Application.ScreenUpdating = False
    Dim wks As Worksheet
    For Each wks In ThisWorkbook.Worksheets
        If wks.Name = Sheets("Monatsplanung").Range("b44") Then
            msgbox ("Monat ist schon gespeichert !")
            Exit Sub
        End If
    Next
    With Sheets("Monatsplanung")
        Monatswert = .Range("b44")
'        Sheets("Monatsplanung").Select
        .Copy After:=Sheets("Monatsplanung")
'        Sheets("Monatsplanung (2)").Select
        ActiveSheet.Name = Monatswert
        .Range("b7:z37").ClearContents
        neumwert = Monatswert + 1
        .Range("b44").Value = neumwert
        X = 6
        For I = .Range("c117") To .Range("c118")
            X = X + 1
            If Sheets("DB").Range("c" & I) <> 0 Then .Range("c" & X).Value = "belegt"
        Next I
    End With
    Application.ScreenUpdating = True
End Sub


Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Peter W
Geschrieben am: 02.04.2005 13:09:59

Servus Hajo,

danke für deine Mühe, so ganz das was ich wollte isses nicht, wobei der Veränderte Teil ja wirklich fast ohne Select auskommt. Den werd ich auf jeden Fall übernehmen.
Ich hab jetzt jede Spaltenabfrage einzeln gemacht (siehe Code), ist auch nicht weiter tragisch , ist halt Tipparbeit und vergrössert die Datei.
Dankeschön hast mir wieder was beigebracht.

' Eintragung von Belegung in die Monatsplanung
a = Sheets("Monatsplanung").Range("c117")
c = Sheets("Monatsplanung").Range("c118")
x = 6
For i = a To c
x = x + 1
If Sheets("DB").Range("b" & i) <> 0 Then
Sheets("Monatsplanung").Range("b" & x).Value = "belegt"
End If
Next i
x = 6
For i = a To c
x = x + 1
If Sheets("DB").Range("c" & i) <> 0 Then
Sheets("Monatsplanung").Range("c" & x).Value = "belegt"
End If
Next i
'usw. bis Spalte Z

MfG
Peter


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Hajo_Zi
Geschrieben am: 02.04.2005 13:12:47

Hallo Peter,

wenn ich nich Blind bin kommt er ohne Select aus.

Gruß Hajo

Das Forum lebt auch von den Rückmeldungen.


Bild


Betrifft: Sry, hab die 2 ' vor den Select Anw. nicht gesehen von: Peter W
Geschrieben am: 02.04.2005 13:15:27

;)


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Paula
Geschrieben am: 02.04.2005 12:12:26

hi,
was steht in zelle c117 bzw c118 für ein wert?
Paula


Bild


Betrifft: AW: Ist es möglich Schleife zu verkürzen von: Peter W
Geschrieben am: 02.04.2005 12:16:40

Servus,
@Hajo: Danke funzt und hat mir schon 3 Zeilen gespart.
@Paula:
Es handelt sich generel um eine Datenbank des ganzen Jahres, in den Beiden Zeilen wird die Anfangszeile und die Endzeile des zudurchsuchenden Monats mittels Vergleichsformel ausgegeben =VERGLEICH(DATUM(JAHR(HEUTE());$B$44;WENN(ODER(B44=1;B44=3;B44=5;B44=7;B44=8;B44=10;B44=12);31;WENN(B44=2;28;30)));DB!$A$1:$A$367)

MfG
Peter


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Ist es möglich Schleife zu verkürzen"