Clever-Excel-Forum

Normale Version: Nicht aktive Tabelle Zellen über Variable ansprechen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo!

Habe folgendes Problem
Möchte gerne Zellen in nicht aktivierten TabellenBlättern änder!
Habe auch einen Code dafür nur muß dann dasTabellenBlatt aktiv sein.
Code zum ändern der Zelle
Code:
Sub DatumAk()
   Dim AktuellesDatum As Date, datFrist As Date, datsecond As Date
   Dim Zelle As Range
   Dim strWieviel As String
   Dim c As Long
 AktuellesDatum = Date

'SpalteDurchlaufen
'For Each Zelle In ThisWorkbook.Sheets(mb).Range("H10:H50")
For Each Zelle In Range("H10:H50") '
 If Zelle <> "" Then
   datfirst = Zelle.Value                                          'Schreibe in Zelle
       strWieviel = Zelle.Offset(0, -2)                            'die Anzahl der Monate
       If strWieviel > 0 Then
           datsecond = DateAdd("m", strWieviel, datfirst)          'DateAdd(Year(datfirst), Month(datfirst) + strWieviel, Day(datafirst))
             Zelle.Offset(0, -1) = datsecond                       '.Select
       End If
  End If
Next
End Sub
Ich habe mir gedacht deise Zeile

Code:
For Each Zelle In Range("H10:H50") '
in diese zu änder

Code:
'For Each Zelle In ThisWorkbook.Sheets(mb).Range("H10:H50")
Jetzt ist es so das nur das gerade aktive Blatt geändert wird.
Ich möchte aber das er alle Sheets durchläuft.
Was mach ich falsch?
Hallo

wenn ich dich richtig verstanden habe...
ungetestet


Code:
Sub DatumAk()
   Dim AktuellesDatum As Date, datFrist As Date, datsecond As Date
   Dim Zelle As Range
   Dim strWieviel As String
   Dim c As Long
   Dim i As Integer
   AktuellesDatum = Date
   
   'SpalteDurchlaufen
   For i = 1 To ThisWorkbook.Worksheets.Count
       With Worksheets(i)
           For Each Zelle In .Range("H10:H50") '
               If Zelle <> "" Then
                   datfirst = Zelle.Value                                          'Schreibe in Zelle
                   strWieviel = Zelle.Offset(0, -2)                            'die Anzahl der Monate
                   If strWieviel > 0 Then
                       datsecond = DateAdd("m", strWieviel, datfirst)          'DateAdd(Year(datfirst), Month(datfirst) + strWieviel, Day(datafirst))
                       Zelle.Offset(0, -1) = datsecond                       '.Select
                   End If
               End If
           Next
       End With
   Next
End Sub


MfG Tom
Hallo Tom!

Danke für die Hilfe!

Nach dem ich deinen Code getestet habe, ist mir dann aufgefallen was in meinen Code Falsch war.
Man sollte die Variabeln auch richtig deklarieren.

Ich hatte Dim mb as Long geschrieben :16:  ,wenn man es richtig macht Dim mb as Integer
dann funtzt auch diese Zeile

Code:
'For Each Zelle In ThisWorkbook.Sheets(mb).Range("H10:H50")
Hi,

(24.07.2017, 09:07)michel34497 schrieb: [ -> ]Ich hatte Dim mb as Long geschrieben :16:  ,wenn man es richtig macht Dim mb as Integer
dann funtzt auch diese Zeile

das darf nach meinem Wissen keinen Unterschied ausmachen!

Long ist dasselbe wie Integer, nur hat es einen größeren Bereich.
Hallo

ich sehe gar nicht wo mb überhaupt deklariert ist

MfG Tom
Auch Hallo,

... und man sieht auch nicht, welche Werte die Variable mb haben kann.