Nicht aktive Tabelle Zellen über Variable ansprechen
#1
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?
mfg
Michael
98

WIN 7 Office 2007
Zitieren to top
#2
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
Zitieren to top
#3
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")
mfg
Michael
98

WIN 7 Office 2007
Zitieren to top
#4
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.
Zitieren to top
#5
Hallo

ich sehe gar nicht wo mb überhaupt deklariert ist

MfG Tom
Zitieren to top
#6
Auch Hallo,

... und man sieht auch nicht, welche Werte die Variable mb haben kann.
Gruß Stefan
Win 7 / Office 2007
Zitieren to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste