Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1572to1576
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ThisWorkbook - Definition

ThisWorkbook - Definition
11.08.2017 14:50:53
Lena
Hallo zusammen,
ich werde glaube ich langsam blind...
Ich habe zwei Workbooks mit denen ich arbeite. In dem einen (Master File mit Makro) wird in einem Tab nach einem Land gefiltert (welches ich durch eine Liste vom Nutzer definieren lasse und dafür einen loop eingefügt habe). Die gefilterte Tabelle wird kopiert und in ein Template eingefügt. Bei dem "Anrufen" der Dateien habe ich aber schon eine Fehlermeldung in der Select-Zeile(fett markiert)... Die Fehlermeldung lautet:"Laufzeitfehler '1004': Die Select-Methode des Worksheet-Objektes konnte nicht ausgeführt werden.".
Jetzt die Frage: Habe ich bei der Definition mit ThisWorkbook schon was falsch gemacht? Ich sehe es nicht mehr...
Vielen lieben Dank für eure Hilfe!!
Lena
Sub ReferTo()
'## Define both workbooks first and open Template:
Dim x As Workbook
Dim y As Workbook
Set x = ThisWorkbook
Set y = Workbooks.Open("H:\Daten\Open Order Report\NEW\Open Order Report_Country_MASTER_v2.xltx")
'Country Loop
x.Sheets("Country Report Generator").Select
Cty_Count = Cells(65536, 2).End(xlUp).Row
For B = 2 To Cty_Count
ThisWorkbook.Sheets("Country Report Generator").Select
CTY = Cells(B, 2).Value
'Definition
x.Sheets("Original Data from SAP").Select
lr = Cells(65536, 1).End(xlUp).Row
lc = Cells(1, 255).End(xlToLeft).Column
'Filters for a country, copies and pastes into Worksheet Country Report
ThisWorkbook.Sheets("Original Data from SAP").Select
ActiveSheet.Range(Cells(1, 1), Cells(lr, lc)).AutoFilter Field:=2, Criteria1:=CTY
'Copy and paste and set filter
Range(Cells(1, 1), Cells(lr, lc)).Select
Selection.Copy
y.Sheets("raw data").Range("A1").PasteSpecialActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveSheet.Range(Cells(1, 1), Cells(lr, lc)).AutoFilter Field:=2

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
und wenn du vorher mal "x.activate" sagst ?
11.08.2017 15:02:19
mmat
Und wenn du vorher mal "x.activate" sagst ?
AW: ThisWorkbook - Definition
11.08.2017 15:09:17
Lena
Danke, ich habe es ausprobiert und jetzt gibt er mir einen Fehler bei:
Set x = ThisWorkbook
Fehler:
Fehler beim Kompilieren: Function oder Variable erwartet
Hast du dazu vielleicht auch noch eine Idee?
AW: ThisWorkbook - Definition
11.08.2017 15:12:03
Lena
Ich habe jetzt einfach mal einen sehr kleinen Code genommen, aber auch hier funktioniert das nicht...
Benutze ich ThisWorkbook falsch?
Sub ThisWorkbook()
ThisWorkbook.Close SaveChanges:=False
End Sub

AW: ThisWorkbook - Definition
11.08.2017 15:18:57
mmat
OK, das kann nur ein Mißverständnis sein.
x.Sheets("Country Report Generator").Select

wird immer dann schiefgehen, wenn x nicht die aktive Mappe ist. y ist die aktive Mappe.
daher muß genau vor dieser Zeile ein
x.activate

stehen
oder du sagst
application.goto x.Sheets("Country Report Generator").Range("A1")

Anzeige
Was hat den hier .Select für einen Zweck?
11.08.2017 15:09:51
EtoPHG
Hallo Lena,
Im Level VBA gut sollte eigentlich bekannt sein, dass .Select ein ziemlich überflüssiger Befehl ist.
Bei deiner genannten Zeile ist das MASTER-File das aktive Workbook und damit fliegt dir der .Select auf das Thisworkbook um die Ohren, denn .Select kann nur im Workbook erfolgen, das den 'Fokus' hat, bzw. das aktive ist.
Aber wie gesagt: Diese Select(s) sind überflüssig, wenn alles sauber referenziert wird!
Gruess Hansueli
AW: ThisWorkbook - Definition
11.08.2017 17:53:38
Werner
Hallo Lena,
bei VBA-gut solltest du aber wissen, dass man alle Variablen auch deklarieren sollte. Ich hab das Mal nachgeholt. Deine Variablen für die beiden Workbook habe ich jetzt mal umbenannt. So wird der Code meiner Meinung nach besser lesbar. Die ganze Selektiererei ist jetzt auch draußen.
Sub ReferTo()
Dim wbSource As Workbook
Dim wbTemp As Workbook
Dim City_Count AS Long
Dim B As Long
Dim lr As Long
Dim lc AS Long
Dim CTY AS String
'## Define both workbooks first and open Template:
Set wbSource = ThisWorkbook
Set wbTemp = Workbooks.Open("H:\Daten\Open Order Report\NEW\Open Order Report_Country_MASTER_v2. _
xltx")
'Country Loop
With wbSource.WorkSheets("Country Report Generator")
Cty_Count = .Cells(.Rows.Count, 2).End(xlUp).Row
End With
For B = 2 To Cty_Count
With wbSource.WorkSheets("Country Report Generator")
CTY = .Cells(B, 2).Value
End With
'Definition
With wbSource.WorkSheets("Original Data from SAP")
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
lc = .Cells(1, .Columns.Count).End(xlToLeft).Column
'Filters for a country, copies and pastes into Worksheet Country Report
.Range(.Cells(1, 1), .Cells(lr, lc)).AutoFilter Field:=2, Criteria1:=CTY
'#### hier kopierst du aber alle Daten, nicht nur die gefilterten####
'Copy and paste and set filter
.Range(.Cells(1, 1), .Cells(lr, lc)).Copy _
wbTemp.WorkSheets("raw data").Range("A1")
End With
With wbTemp.Worksheets("raw data")
.Range(.Cells(1, 1), .Cells(lr, lc)).AutoFilter Field:=2
End With
Kann aber nicht garantieren, dass alles fehlerfrei ist, ich habe derzeit nur ein Tablet zur Verfügung.
Gruß Werner
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige