Microsoft Excel

Herbers Excel/VBA-Archiv

Makro beginnt nicht mit der richtigen Seite


Betrifft: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 13:39:04

Hallo,

ich habe in der gleichen Datei wie das selbst geschriebene Makro ein sheet "Makros", wo ich ein Command-Button eingefügt habe und das Makro "ÜbersichtErstellen" zugewiesen habe.

Nun wird das Ergebnis im Blatt "Makros" gezeigt und nicht im Blatt "Übersicht". Wenn ich es aber im VBA-Editor die Einzelne Schritte meines Makros mit F8 durchgehe, dann passt alles wunderbar.

FRAGE: Wie löse ich das Problem?? Ich dachte mit "ThisWorkbook.Sheets("Übersicht").Range("A1").Select", aber es funktioniert nicht :-(

Sub ÜbersichtErstellen()

'Inhalte in Blätter "Abzug" und "Übersicht" leeren
ThisWorkbook.Sheets("Übersicht").Range("A1").Select
ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Clear
ThisWorkbook.Sheets("Übersicht").Range("A1:AB200").Clear

ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Copy Destination:=ThisWorkbook.Sheets("Übersicht" _
).Range("A1:AB200")
'Spalten löschen
ActiveSheet.Columns("A:A").Delete
ActiveSheet.Columns("B:C").Delete
ActiveSheet.Columns("C:C").Delete
ActiveSheet.Columns("D:N").Delete
ActiveSheet.Columns("H:J").Delete
ActiveSheet.Columns("J").Delete

'Zahl vom Textformat ins Zahlenformat umwandeln
Dim LetzteZeile As Long
Dim x As Long
LetzteZeile = Range("C200").End(xlUp).Row
For x = 2 To LetzteZeile
Cells(x, 3) = CLng(Cells(x, 3))
Cells(x, 3).NumberFormat = "General"
Next

'Werte dazuschreiben
ActiveSheet.Range("k1").Value = "Summe"
ActiveSheet.Range("N1").Value = "check"
'falls neue KST dazu kommen, dann Range "J4:J6" anpassen
ThisWorkbook.Sheets("Makros").Range("J4:J6").Copy Destination:=ThisWorkbook.Sheets("Übersicht"). _
Range("K2")

End Sub

  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: PeterK
Geschrieben am: 28.11.2018 13:43:23

Hallo

Activate statt Select


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 13:59:41

Hallo Peter,

mit Activate habe ich früher auch probiert, leider erfolglos. Sorry, habe vergessen noch zu schreiben, Wenn ich "activate" oder "select" schreibe, dann kommt Fehlermeldung "Die Activate Methode des RangeObjectes konnte nicht ausgeführt werden".

Ich sehe nicht das Problem???

Sub ÜbersichtErstellen()

'Inhalte in Blätter "Abzug" und "Übersicht" leeren
ThisWorkbook.Sheets("Übersicht").Range("A1").Activate
'ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Clear
ThisWorkbook.Sheets("Übersicht").Range("A1:AB200").Clear

ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Copy Destination:=ThisWorkbook.Sheets("Übersicht").Range("A1:AB200")


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 13:59:48

Hallo Peter,

mit Activate habe ich früher auch probiert, leider erfolglos. Sorry, habe vergessen noch zu schreiben, Wenn ich "activate" oder "select" schreibe, dann kommt Fehlermeldung "Die Activate Methode des RangeObjectes konnte nicht ausgeführt werden".

Ich sehe nicht das Problem???

Sub ÜbersichtErstellen()

'Inhalte in Blätter "Abzug" und "Übersicht" leeren
ThisWorkbook.Sheets("Übersicht").Range("A1").Activate
'ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Clear
ThisWorkbook.Sheets("Übersicht").Range("A1:AB200").Clear

ThisWorkbook.Sheets("Abzug").Range("A1:AB200").Copy Destination:=ThisWorkbook.Sheets("Übersicht").Range("A1:AB200")


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Werner
Geschrieben am: 28.11.2018 14:07:18

Hallo Meli,

da ist mir einiges unklar.

1. es sollen die Daten aus dem Blatt Abzug ins Blatt Übersicht kopiert werden ?!?
2. in welchem Blatt willst du die Spalten löschen?
3. es sollen die Textzahlen im Blatt Übersicht umgewandelt werden?!?
4. das ginge vermutlich auch ohne eine Schleife über alle Zellen

Am besten wäre es, wenn du mal deine Datei mit anonymisierten Daten hochladen würdest.

Gruß Werner


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 14:21:05

Hallo Werner,

ich habe hier nur ein Auszug vom Makro reinkopiert, da das Makro an sich gut funktioniert - wenn ich mit VBA-Editor die einzelnen Schritte durchgehe (und auch beim Testen von Teilmakros hat es funktioniert).
Aber nicht wenn ich mit dem Button das Makro anstossen möchte.

Also in einer Datei habe ich 3 sheets ("Makros", "Übersicht", "Abzug"). Die Daten werden von "Abzug" zur "Übersicht" kopiert und weiterverarbeitet. Um einige Makros seitens user zu starten, habe ich ein extra Blatt mit Command-Button erstellt. Und da habe ich mein Problem!! Das Makro fängt nicht mit Schritt 1 " Textinhalt leeren" und arbeitet sich ab:-(((


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Werner
Geschrieben am: 28.11.2018 14:29:38

Hallo Meli,

teste mal (aber natürlich mit einer Kopie deiner Datei):

Sub ÜbersichtErstellen()
Dim LetzteZeile As Long, x As Long

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

ThisWorkbook.Worksheets("Abzug").Range("A1:AB200").ClearContents
ThisWorkbook.Worksheets("Übersicht").Range("A1:AB200").ClearContents

With ThisWorkbook.Worksheets("Abzug")
    .Range("A1:AB200").Copy _
    Destination:=ThisWorkbook.Worksheets("Übersicht").Range("A1")
    'Spalten löschen ### in welchem Blatt?? derzeit im Blatt Abzug###
    'Blattnamen vor Columns schreiben
    .Columns("A:N").Delete
End With

'Zahl vom Textformat ins Zahlenformat umwandeln
'### ich bin mal davon ausgegangen im Blatt "Übersicht" ###
With ThisWorkbook.Worksheets("Übersicht")
    LetzteZeile = .Cells(.Rows.Count, 3).End(xlUp).Row
    For x = 2 To LetzteZeile
        .Cells(x, 3) = CLng(.Cells(x, 3))
    Next
    .Columns(3).NumberFormat = "General"
    'Werte dazuschreiben
    .Range("K1") = "Summe"
    .Range("N1") = "check"
    Worksheets("Makros").Range("J4:J6").Copy _
    .Range ("K2")
End With

Application.Calculation = xlCalculationSemiautomatic
End Sub
Mehr kommt von mir ohne Datei nicht. Meine Frage hast du nicht wirklich beantwortet. So weiß ich immer noch nicht sicher, in welchem Blatt die Spalten gelöscht werden sollen.

Gruß Werner


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 15:41:12

Hallo Werner,

also mit dem Tipp "Application.ScreenUpdating = False" und noch aus Google-Recherche "Thisworkbook" weglassen,scheint das Makro ohne zu Meckern zu laufen.
ALLERDINGS einige Formatierungsteile vom Makro "Übersichterstellen" macht er nicht im Blatt "Übersicht" - wie es geschrieben ist-, sondern im Blatt "Makros" :-( (z.B. erste Zeile fest und gelb markieren). Dafür die Zeilen mit Werte dazuschreiben macht er es wieder im richtigen Blatt "Übersicht".

.....Ich bin ratlos!!! finde den Fehler nicht, warum er das macht.

HIer ein Testdatei und der Code
http://www.herber.de/bbs/user/125724.xlsm

Sub ÜbersichtErstellen()

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Sheets("Abzug").Range("A1:AB200").Copy Sheets("Übersicht").Range("A1")
'Spalten löschen
With Sheets("Übersicht")
    .Columns("A:A").Delete
    .Columns("B:C").Delete
    .Columns("C:C").Delete
    .Columns("D:N").Delete
    .Columns("H:J").Delete
    .Columns("J").Delete
End With

'Formatieren()
With Sheets("Übersicht")
    Columns("A:A").EntireColumn.AutoFit
    Columns("B:B").ColumnWidth = 10
    Columns("C:C").ColumnWidth = 9
    Columns("D:D").EntireColumn.AutoFit
    Columns("E:E").EntireColumn.AutoFit
    Columns("J:J").ColumnWidth = 3.44
    Columns("K:K").ColumnWidth = 8
    Columns("M:M").ColumnWidth = 3.44
End With

With Sheets("Übersicht")
    Range("A1:AB1").Font.Bold = True
    Range("A1:AB1").Interior.ColorIndex = 6
End With

 With ActiveSheet.PageSetup
        .Orientation = xlLandscape
        .FitToPagesWide = 1
        .FitToPagesTall = 1
        .FirstPage.CenterFooter.Text = "Übersicht der My-Taxi-Kosten"
        .CenterHorizontally = True
        .PrintArea = ActiveSheet.UsedRange.Address
    End With
    

'Werte dazuschreiben
Sheets("Übersicht").Range("k1").Value = "Summe"
Sheets("Übersicht").Range("N1").Value = "check"

'falls neue KST dazu kommen, dann Range "J3:J5" anpassen
Sheets("Makros").Range("J3:J5").Copy Sheets("Übersicht").Range("K2")

'Errechnen der Summen pro Kostenstelle
Dim Arg1 As Range 'the range I want to sum
Dim Arg2 As Range 'criteria range
Dim Arg3 As Variant 'the criteria as VARIANT
Dim i As Integer
Dim LastColumn As Integer: LastColumn = 12

    Set Arg1 = Sheets("Übersicht").Range("H1:H200") 'Arg1 and Arg2 must be the same size
    Set Arg2 = Sheets("Übersicht").Range("C1:C200") 'Arg1 and Arg2 must be the same size
    Set Arg3 = Sheets("Übersicht").Range("K2:K13")  'criteria can have different size
    'falls neue KST dazu kommen, dann Range letzten Wert von i anpassen - je nach Zeilenanzahl
    For i = 2 To 4
    Sheets("Übersicht").Cells(i, LastColumn) _
            = Application.WorksheetFunction.SumIfs(Arg1, Arg2, Arg3.Cells(i - 1, 1).Value)
    Next

'Errechnen der Gesamtsumme + Check
Sheets("Übersicht").Cells(1, 12).Formula = "=SUM(L2:L15)"
Sheets("Übersicht").Cells(1, 15).Formula = "=SUM(H:H)-L1"


Application.Calculation = xlCalculationSemiautomatic
'ActiveWorkbook.Save

End Sub



  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Werner
Geschrieben am: 28.11.2018 15:50:02

Hallo Meli,

meine Lust hier weiter zu machen hält sich stark in Grenzen.

Warum:
Der Grund ist Crossposting. Du bist mit dem gleichen Problem in einem weiteren Forum unterwegs, ohne daß ich, oder Helfer im anderen Forum davon etwas wissen. Im anderen Forum hat sich auch schon jemand mit dem Problem beschäftigt.

Einer von uns beiden arbeitet dann jetzt wohl für den Papierkorb. Das scheint dir aber egal zu sein, kostet ja nichts.

Zudem hat der Code hier jetzt nicht viel bis fast gar nichts mit dem Eingangs geposteten Code zu tun. Und die Änderungen/Anregungen von mir bzw. vom Helfer im anderen Forum sind so gut wie überhaupt nicht umgesetzt.

Freut mich alles sehr und motiviert mich ungemein hier weiter zu machen.

Gruß Werner


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 16:13:53

Hallo Werner,

erstens war meine Vorgabe heute Vormittag, eine Lösung noch heute zu liefern, deswegen habe ich in 2 Foren diese Frage fast zeitgleich gestellt - ich weiß nicht wann jemand Zeit hat mir zu antwortet.

Zweitens bin ich anfangs davon ausgegangen, dass es an einer Kleinigkeit liegen muss, da ich mein Code schon fertig hatte und inhaltlich das gemacht hat was ich ursprünglich wollte. Aber im Nachhinein stelle ich fest, dass ich es wohl nicht so einfach ist.

Drittens ich habe alle Anregungen von anderem Helfer auch übernommen, nämlich u.a. überall ThisWorksheet in sheets umgewandelt!! Aber das hat einiges gelöst aber nicht alles. Mit deinem Tipp "Application.ScreenUpdating = False" bin fast ans Ziel gekommen. NUR nicht diese Formatierunggeschichte...

Viertens, ich kann dein Ärger verstehen, wenn du das Gefühl hast für Papierkorb zu arbeiten, aber dem ist es nicht so!!!

Wenn du noch Lust hast, mir auf den Fehler zu hinweisen, warum die Formatierung nicht funktioniert, dann würde ich mich freuen. Wenn keine, dann werde ich die nächsten Tage noch darüber grübeln und ggf. nochmal die Frage ins Forum stellen.

Gruß
Meli


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Bernd
Geschrieben am: 28.11.2018 16:04:51

Servus Meli,

da müssen auch die Blätter richtig referenziert sein.
Falsch:

 With Sheets("Übersicht")
     Columns("A:A").EntireColumn.AutoFit
With Sheets("Übersicht")
     Range("A1:AB1").Font.Bold = True
Richtig:
 With Sheets("Übersicht")
     .Columns("A:A").EntireColumn.AutoFit
With Sheets("Übersicht")
     .Range("A1:AB1").Font.Bold = True
Grüße, Bernd


  

Betrifft: AW: Makro beginnt nicht mit der richtigen Seite
von: Meli
Geschrieben am: 28.11.2018 16:23:20

Hallo Bernd,

das war´s!!! Der Punkt hat gefehlt!!! Jetzt läuft alles perfekt!!!

DANKE BERND!!
DANKE WERNER!!!


  

Betrifft: Gerne u. Danke für die Rückmeldung. o.w.T.
von: Werner
Geschrieben am: 29.11.2018 08:46:39