Juli 14, 2020, 00:15:11

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Makro geht nicht über Button

Begonnen von Earl of Green, Mai 21, 2010, 10:11:39

⏪ vorheriges - nächstes ⏩

Earl of Green

Hallo zusammen,

ich habe ein Makro geschrieben, dass auch tadellos funktioniert. Wenn die das Makro allerdings über einen Button ausführe  geht es nicht - wie kann das sein?

Weiß jemand was?
Dank Euch
Stefan

MzKlMu

Hallo,
ich würde mal sagen, da stimmt was nicht.  ;D

Im Ernst, was erwartest Du mit diesen Angaben für eine Antwort.

Wie sieht das Makro aus?
Ist es wirklich ein Makro oder VBA?
Wie willst Du das Makro mit dem Button starten (Code?)
Gruß
Klaus

Earl of Green

Hi,
hat das denn etwas miteinander zu tun? Das Makro funktioniert als solches ja wunderbar. Ich hab dann nur die Ausführung des Makros mit einem Button verbunden -> also CommandButton und dann das Makro damit ausgelöst.

Aber anscheinend hängs daran  :).
Mein Makro activiert eine andere geöffnete Excel-Datei und führt dann da Formatierungen aus. Wenn ich über den Button starte, dann gibt er mir einen Fehler, dass diese Datei nicht da bzw. nicht geöffnet ist - ohne Button gehts....  ???

MzKlMu

Hallo,
und die anderen Fragen?

ZitatIst es wirklich ein Makro oder VBA?
Wie willst Du das Makro mit dem Button starten (Code?)
Gruß
Klaus

Earl of Green

OKOK :)

Private Sub CommandButton1_Click()
' On Error GoTo Fehlerhandling
    Windows("FAM_Ereignisse 1 .xls").Activate


    Range("A6:O6").Select
    With Selection.Interior
        .ColorIndex = 15
        .Pattern = xlSolid
    End With
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = 15
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = 15
    End With
    Cells.Select
    With Selection.Font
        .Name = "Arial"
        .Size = 8
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Rows("2:4").Select
    With Selection.Font
        .Name = "Arial"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("A1").Select
    With ActiveSheet.PageSetup
        .PrintTitleRows = "$6:$6"
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = "&D - &T"
        .CenterFooter = ""
        .RightFooter = "&P von &N"
        .LeftMargin = Application.InchesToPoints(0.393700787401575)
        .RightMargin = Application.InchesToPoints(0.393700787401575)
        .TopMargin = Application.InchesToPoints(0.393700787401575)
        .BottomMargin = Application.InchesToPoints(0.393700787401575)
        .HeaderMargin = Application.InchesToPoints(0.47244094488189)
        .FooterMargin = Application.InchesToPoints(0.47244094488189)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
    Columns("A:A").ColumnWidth = 8.14
    ActiveWindow.SmallScroll Down:=9
    Columns("B:B").ColumnWidth = 13.29
    Columns("C:C").ColumnWidth = 31.71
    Columns("D:D").ColumnWidth = 31.71
    ActiveWindow.SmallScroll Down:=3
    Columns("D:D").ColumnWidth = 33.57
    Columns("C:C").ColumnWidth = 33.71
    Columns("E:E").EntireColumn.AutoFit
    Columns("F:F").EntireColumn.AutoFit
    Columns("G:G").EntireColumn.AutoFit
    Columns("H:H").EntireColumn.AutoFit
    ActiveWindow.SmallScroll Down:=-27
    Columns("I:I").EntireColumn.AutoFit
    Columns("J:J").EntireColumn.AutoFit
    Columns("K:K").EntireColumn.AutoFit
    Columns("L:L").ColumnWidth = 14.29
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    Columns("M:M").ColumnWidth = 17.57
    Columns("N:N").ColumnWidth = 8.14
    Columns("O:O").ColumnWidth = 8.29
    Cells.Select
    Range("D1").Activate
    Cells.EntireRow.AutoFit
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    Range("A1").Select
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    ActiveWorkbook.Save
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
    ActiveWindow.Close
    ActiveWindow.SmallScroll Down:=-6
    Range("A1").Select

  Exit Sub
Fehlerhandling:
    MsgBox "Keine oder zu viele CS-Ereignislisten geöffnet"
    Windows("Ereignisse CS - Formatierungsmakro.xls").Activate
End Sub


Ich habe es mit dem Makro-Generator aufgezeichnet und etwas angepasst in VBA. Der Button wurde eingebunden indem ich mir einen Button erzeugt habe und das Makro/VBA in die Sub kopiert habe (wie sonst auch immer ....)

Gruß
Stefan

MzKlMu

Hallo,
sorry, ich war da zu sehr auf Access fixiert und übersehen, dass es um Excel geht.

Da muss jemand anders ran.
Gruß
Klaus

Earl of Green


database

Hallo,

sprichst du hier denn nicht eine andere Datei an??

Windows("FAM_Ereignisse 1 .xls").Activate
Wenn die Datei in der sich der Button mit dem Makro befindet so heißt, brauchst du die eigene Datei ja nicht aktivieren, in der hast ja geklickt - maximal dann das betroffene also zu formatierende Arbeitsblatt.
Der gesamte Code scheint auf den ersten Blick das erste Arbeitsblatt der aktuellen Datei zu betreffen - daher fällt mir auch nur die Erste Zeile in deinem Code als nicht ganz verständlich auf.

Grüße

Peter


Earl of Green

Hallo database,
erstmal Danke. Aber es ist schon richtig so. Das Makro ist in einer Excel-Liste die jeder auf seinem Rechner hat. Nachdem starten eines Reportings aus dem Intranet (was ebenfalls lokal passiert) soll dieses Makro dann die andere Excel-Liste für einen anständigen Druck vorbereiten.

Ich habe noch etwas festgestellt. Das Problem tritt nämlich nun auch beim Makro auf, wenn es zwischenzeitlich mal geschlossen war.

Ich denke das liegt an dem Dateinamen, da der aus dem Intranet immer mit xxx[1].xls exportiert wird und dann im Makro als xxx 1 .xls erscheint. Der "*" als Platzhalter  (also: xxx*.xls) hat bei mir nicht funktioniert - gibts da ne andere Möglichkeit die offene Excel-Liste die mit dem Dateinamen xxx anfängt zu öffenen und bearbeiten zu lassen?

Danke und Gruß
Stefan

database

Hallo Stefan,

kann durchaus sein, dass durch den Stern Excel sich weigert die Dateinamen zu akzeptieren.
Ich bin mit Excel-VBA nicht sattelfest und müsste daher selbst recherchieren, wie Dateinamen zusammengestzt werden - gehe aber davon aus, dass man eine Stringvariable dazu verwenden könnte und diese dann an den Öffnen-Dialog oder die Prozedur zum Öffnen der Datei übergeben wird.

Die Makro-Sicherheit ist auf allen betroffenen Rechnern richtig konfiguriert.

Grüße
Peter

Earl of Green

Vielen Dank,

ich habe in einem Forum erfahren, dass ich mit einer Schleife durch alle offenen Tasks durch muss. Bin gerade daran am basteln!

Danke nochmal und Gruß
Stefan