MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 13.09.2017, 12:55   #1
SeVenX
Neuer Benutzer
Neuer Benutzer
Standard VBA - kann mir jemand meinen denkfehler mitteilen?

Moin!

Ich versuche gerade einen Code zu überarbeiten, oder eher eine Schleife, welche sich auf eine Spalte "C" bezieht und welche ich nun versuche auf jede weiterfolgende zweite Spalte zu beziehen. Sprich sobald der loop durchläuft und durch die Spalte "C" durch ist, sich um Spalte "E" kümmert, und danach "G" usw.

Meine Idee war, dass ich folgendes mache. Allerdings komme ich so nur bis Spalte "E"

Code:

 
Dim VonJahr As Long         ' niedrigstes Jahr (Tabellenblatt)
Dim BisJahr As Long         ' höchstes Jahr (Tabellenblatt)
Dim Jahr As Long
Dim sh As Worksheet         ' Worksheet
Dim LzVon As Date           ' Kontrakt-Laufzeit von
Dim LzBis As Date           ' Kontrakt-Laufzeit Bis
Dim r As Long               ' Zeilen#
Dim s As String             ' Spalte
Dim i As String             ' Spaltenzähler
    
s = "A"                         'Ausgangsspalte    
i = Chr(Asc(s) + 2)         'Spalte + n
und das ist die Loop, auf welche ich den teil anwenden will.

Code:

    For Jahr = Year(LzVon) To Year(LzBis)
        Set sh = Worksheets(CStr(Jahr))
        With sh
            For r = 2 To 65
                If .Range("A" & r) <> "" Then
                    If .Range("B" & r) < LzVon Or .Range("A" & r) > LzBis Then
                        .Range(i & r) = 0     ' außerhalb Laufzeit
                    Else
                        .Range(i & r) = ""    ' innerhalb der Laufzeit
                    End If
                End If
            Next r
        End With
     Next Jahr
End Sub
Könnt ihr mir helfen? wo ist mein Fehler?
LG SevenX

Geändert von SeVenX (13.09.2017 um 13:26 Uhr).
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:06   #2
EarlFred
MOF Guru
MOF Guru
Standard

Hallo SevenX,

kannst Du mit diesen Hinweise etwas anfangen?

Code:

Option Explicit
Sub test()

Dim lngSpalte As Long

For lngSpalte = 3 To 99 Step 2
  Columns(lngSpalte).Interior.ColorIndex = 3
  Cells(3, lngSpalte).Interior.ColorIndex = 4
Next lngSpalte

End Sub

Grüße
EarlFred
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:06   #3
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Moin Moin,

wundert mich, das du überhaupt in die Spalte "E" kommst.

Was verbirgt sich denn hinter "j" ?

Grüße
jack_D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:24   #4
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Moin EarlFred.
Werde ich gleich feststellen. Danke erstmal für den Hinweis.

Also habe mir noch mal den Code angeguckt. Wenn ich den Code richtig Verstehe hast du eine for schleife gebraut mit den Spalten. die über spalte 3 ("c") bis 99 (weiß ich gerade nicht aus dem kopf) läuft mit Step 2 ist wahrscheinlich gemeint, dass es der Zweite schritt der schleife ist. also der schritt nach r. Versteht Excel das "step 2"? oder meinst du ich muss eine Schleife in die Schleife bauen?`
durch columns(lngspalte) weiß er wo er anfängt und weitermacht sobald "next" folgt. Allerdings verstehe ich nicht, was .Interior.ColorIndex = 3 darin zu suchen hat. da es ja spalten einfärbt oder nicht?
Cells (3, lngspalte) müsste also die Zelle 3 in einer Spalte welche durch lngspalte bestimmt wird ansprechen und einfärben.
Da du meine Tabelle aber nicht sehen kannst, und ich nicht verstehe, was mir das einfärben meiner Tabelle bringt, nehme ich an das es sich eher auf meinen Code bezieht und ich mir den Code an den stellen besser noch mal angucke.


Moin auch dir Jack_D ups da ist mir gerade ein Fehler unterlaufen beim kopieren des Codes.
j war bis vor kurzem noch i. Habe nur versucht ob ich mit einer weiteren Variablen arbeiten kann daher habe ich nun im Code j stehen.
werde das sofort anpassen. Danke.

Geändert von SeVenX (13.09.2017 um 13:39 Uhr).
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:34   #5
aloys78
MOF Meister
MOF Meister
Standard

Hallo,

meine Anregung; mit j konnte ich auch nichts anfangen:
Code:

    Dim s As Long
    
    For Jahr = Year(LzVon) To Year(LzBis)
        Set sh = Worksheets(CStr(Jahr))
        With sh
            For s = 1 To 17 Step 2     ' A bis Q  ---> anpassen
                For r = 2 To 65
                    If .Cells(r, s) <> "" Then
                        If .Cells(s + 1, r) < LzVon Or .Cells(s, r) > LzBis Then
                            .Range(j & r) = 0     ' außerhalb Laufzeit
                        Else
                            .Range(j & r) = ""    ' innerhalb der Laufzeit
                        End If
                    End If
                Next r
            Next s
        End With
     Next Jahr
Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:50   #6
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Moin aloys!

Ja leider habe ich schon weitergearbeitet am Code und ihn später erst kopiert, was dazu geführt hat, dass ich anstatt i; j in der Schleife stehen hatte. Die Punkte die du mir makiert stehen nun als i's.

Grüße SevenX
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 13:55   #7
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Moin

Code:

For lngSpalte = 3 To 99 Step 2
  Columns(lngSpalte).Interior.ColorIndex = 3
  Cells(3, lngSpalte).Interior.ColorIndex = 4
Next lngSpalte
Worauf Earlfred mit dem Code hinauswollte, ist

1. Die Schleife mit "Step 2" für die Spalten (Für jede 2. Spalte soll "gearbeitet" werden")

2. Die Referenzierung mit ".Cells(Zeile, Spalte)" statt deines "Range()"

Der Rest ist einfach nur Beiwerk der nichts mit dir zu tun hat.

Grüße
jack_D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 14:01   #8
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ahhh ok.
Ja das mit den Spalten habe ich mir schon gedacht.
Aber das mit dem einfärben hat mich verwirrt.
Da es ja nichts damit zu tun hatte.
Aber gut dann war es ein Beispiel über den ich ans Ergebniss kommen sollte.
Ich denke ab und zu sehr kompliziert.

Vielen Dank. Ich melde mich sobald ich den Code eingespeist habe.
SeVenX
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 14:10   #9
aloys78
MOF Meister
MOF Meister
Standard

Hallo,

Zitat:

was dazu geführt hat, dass ich anstatt i; j in der Schleife stehen hatte

Das war nicht die Frage.
Auf Dein Beispiel bezogen;
- erste Spalte ist A, was soll dann i bedeuten ?
- der nächste Zyklus beginn mit Spalte C, und was wäre dann i ?

Gruß
Aloys
aloys78 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 14:24   #10
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hi, Aloys

ich nehme an, dass du dich hier drauf beziehst:
Code:

Dim s As String             ' Spalte
Dim i As String             ' Spaltenzähler
    
s = "A"                         'Ausgangsspalte    
i = Chr(Asc(s) + 2)         'Spalte + n
i ist praktisch "C" da:
i = Chr(Asc(s) + 2)
s = "A" ja um 2 spalten addiert und somit i = "C" ist.

Ich hatte halt gehoffe, dass ich durch diesen Code jede zweite Spalte anspreche wenn ich das in eine Schleife einbaue.

Grüße
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 14:30   #11
EarlFred
MOF Guru
MOF Guru
Standard

Hallo SevenX,

Zitat:

Ich hatte halt gehoffe, dass ich durch diesen Code jede zweite Spalte anspreche wenn ich das in eine Schleife einbaue.

grundsätzlich geht das auch. Aber welche Spalte kommt denn nach Spalte "Z" und was passiert dann mit Deinem Zähler?

Sehr unpraktisch, wenn man so von 16384 Spalten nur 26 nutzen kann:
Code:

Option Explicit

Sub test()
Dim s As String, i As String, x As Long

s = "A"

For x = 1 To 100
  i = Chr(Asc(s) + 2 * x)
  Range(i & "1").Interior.ColorIndex = 3
Next x
End Sub
Grüße
EarlFred

Geändert von EarlFred (13.09.2017 um 14:33 Uhr).
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 13.09.2017, 14:44   #12
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hi EarlFred,

Oh über diese Problematik hatte ich noch gar nicht nachgedacht. Da wäre ich aber auch wieder schnell an meine Grenzen gekommen. Vielen Dank für den Hinweis. Werde versuchen es mir zu merken.

Ich freue mich sehr, dass hier so viele hilfsbereite Menschen sind, die mir helfen können mein Wissen zu erweitern. Habe mir nun auch Excel für Zuhause zugelegt, um die Arbeit nicht nur auf die normale Arbeitszeit zu begrenzen, und so auch nach Feierabend mal hier in Codes zu versacken.

Grüße SevenX
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.09.2017, 07:45   #13
SeVenX
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Achja falls ich es noch nicht erwähnt haben sollte. Es klappt alles einwandfrei!

LG und vielen Dank euch noch mals!
SeVenX ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.09.2017, 08:08   #14
jack_D
MOF Koryphäe
MOF Koryphäe
Standard

Danke für die Rückmeldung!

Grüße
jack_D ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:37 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.