Schleife über alle Tabellen

16/09/2009 - 09:37 von Christian John | Report spam
Hallo Community,

eigentlich ganz einfach aber ich bekomme es nicht hin...
Erst einmal der Code:

Sub formelauto()
For i = 1 To Sheets.Count
If Sheets(i).Name <> "xyz" And Sheets(i).Name <> "xyzu" And
Sheets(i).Name <> "123" And Sheets(i).Name <> "1234" Then

Range("Q22").Select
ActiveCell.FormulaR1C1 =
"=CONCATENATE(R[-16]C[-15],R[-13]C[-15],R[-15]C[-15])"
Range("Q27:R27").Select
ActiveCell.FormulaR1C1 = _
"=VLOOKUP(R[-5]C,'[Mappe.xls]für Übertragung'!R2C10:R178C23,13,FALSE)"
Range("Q27:R27").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,
SkipBlanks _
:=False, Transpose:=False
Range("Q22").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("Q22").Select
ActiveCell.FormulaR1C1 = ""
Range("Q22").Select

End If
Next i
End Sub

Der Code in der Mitte ist ok, da es làuft wenn ich es nicht automatisch über
alle Blàtter laufen lasse...
Das Problem ist also wie ich jedes i te Sheet ansteuere, bzw. Range(i)??
Das ist ja noch nicht drin...
Wie mache ich das?

Vielen Dank!

Grüße
Christian
 

Lesen sie die antworten

#1 Andreas Killer
16/09/2009 - 12:17 | Warnen spam
On 16 Sep., 09:37, Christian John
wrote:

Der Code in der Mitte ist ok, da es làuft wenn ich es nicht automatisch über
alle Blàtter laufen lasse...
Das Problem ist also wie ich jedes i te Sheet ansteuere, bzw. Range(i)??
Das ist ja noch nicht drin...
Wie mache ich das?


Mit diesem Zwischenteil müsstest Du Sheets(i).Select sagen, damit das
Blatt aktuell wird, denn a.) arbeitest Du mit einem "globalen" Range
und dann bezieht dieses sich auf das aktuelle Blatt und b.) hast Du
einige Range.Select drin, welche eh über sind und nur im aktuellen
Blatt gehen.

Ich schreib das mal ein wenig um, ja?

Andreas.

'Nicht zwischen Groß-/Kleinschreiung unterscheiden
Option Compare Text

Sub formelauto()
Dim S As Worksheet
'Durchlaufe alle Blàtter
For Each S In Sheets
'Welches ist es?
Select Case S.Name
Case "xyz", "xyzu", "123", "1234"
'Nichts machen
Case Else
'Alle anderen
With S
'Dein Zwischenteil, optimiert
.Range("Q22").FormulaR1C1 = _
"=CONCATENATE(R[-16]C[-15],R[-13]C[-15],R[-15]C[-15])"
With .Range("Q27:R27")
.FormulaR1C1 = _
"=VLOOKUP(R[-5]C,'[Mappe.xls]für Übertragung'!R2C10:" &
_
"R178C23,13,FALSE)"
'In Werte umwandeln geht so einfacher:
.Value = .Value
End With
.Range("Q22").ClearContents
End With
End Select
Next
Application.CutCopyMode = False
End Sub

Ähnliche fragen