title image


Smiley Re: MAKRO - BUG !?
Hallo Coolcat,



beim Zugriff auf Tabellen und deren Range-Bereichen ist es immer hilfreich, Objektvariablen zu definieren/referenzieren und diese dann an den entsprechenden Stellen aufzurufen und die Select/Activate-Befehle möglichst zu vermeiden.



Dein Problem ist im Code ist diese Zeile: Sheets(Blatt0).Activate

Damit wird auch für die 2 darüberliegenden For-Schleifen diese Tabelle zum aktiven Sheet und nicht mehr die in der obersten For-Schleife definierte Tabelle.



Option Explicit



Application.Calculation = xlCalculationManual

Application.ScreenUpdating = False

Application.EnableEvents = False



Const Blatt0 = "UPL - CONSOLIDATED"

Const Blatt1 = "UPL1"

Const Blatt2 = "UPL2"

Const Blatt3 = "UPL3"

Const Blatt4 = "UPL4"

Const Blatt5 = "UPL5"



Sub Daten_konsolidieren()



Dim ws0 As Worksheet, ws1 As Worksheet, rg0 As Range



Dim MaxDatenZeile As Long

Dim Daten(0 To 7) As String

Dim Tabelle(1 To 5, 1 To 3) As Variant

Dim StartSpalte(1 To 5, 1 To 4) As Variant

Dim DatenBlatt As Long

Dim DatenBlock As Long

Dim DatenZeile As Long

Dim DatenSpalte As Long



Tabelle(1, 1) = Blatt1

Tabelle(1, 2) = 1

'----------------------------------

Tabelle(2, 1) = Blatt2

Tabelle(2, 2) = 4

'----------------------------------

Tabelle(3, 1) = Blatt3

Tabelle(3, 2) = 4

'----------------------------------

Tabelle(4, 1) = Blatt4

Tabelle(4, 2) = 1

'----------------------------------

Tabelle(5, 1) = Blatt5

Tabelle(5, 2) = 1

'----------------------------------

'----------------------------------

StartSpalte(1, 1) = 1

'----------------------------------

StartSpalte(2, 1) = 32

StartSpalte(2, 2) = 41

StartSpalte(2, 3) = 50

StartSpalte(2, 4) = 59

'----------------------------------

StartSpalte(3, 1) = 15

StartSpalte(3, 2) = 31

StartSpalte(3, 3) = 47

StartSpalte(3, 4) = 63

'----------------------------------

StartSpalte(4, 1) = 1

'----------------------------------

StartSpalte(5, 1) = 1



Set ws0 = ThisWorkbook.Worksheets(Blatt0)

ws0.Cells.ClearContents



For DatenBlatt = 1 To 5

Set ws1 = ThisWorkbook.Worksheets(Tabelle(DatenBlatt, 1))



For DatenBlock = 1 To Tabelle(DatenBlatt, 2)



MaxDatenZeile = ws1.Cells(65536, StartSpalte(DatenBlatt, DatenBlock)).End(xlUp).Row



For DatenZeile = 3 To MaxDatenZeile



For DatenSpalte = 0 To 7



Daten(DatenSpalte) = ws1.Cells(DatenZeile, StartSpalte(DatenBlatt, DatenBlock) + DatenSpalte).Value



Next DatenSpalte





Set rg0 = ws0.Range("A65536").End(xlUp).Offset(1, 0)



For DatenSpalte = 0 To 7



rg0.Offset(0, 0 + DatenSpalte).Value = "'" & Daten(DatenSpalte)



Next DatenSpalte



Next DatenZeile



Next DatenBlock



Next DatenBlatt



Set rg0 = Nothing

Set ws0 = Nothing

Set ws1 = Nothing

Application.Calculation = xlCalculationAutomatic

Application.ScreenUpdating = True

Application.EnableEvents = True



End Sub





Gruß von Luschi

aus klein-Paris

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: