Makroproblem mit Steuerelemente Toolbox

  • #1
O

Oli Bender

Guest
Hallo zusammen,

ich habe ein Makro geschrieben, dass mir eine Rechnung 2 mal ausdrucken soll, einmal mit dem Vermerk Kopie, den ich als Textfeld eingefügt habe und einmal ohne diesen Vermerk. Wenn ich das Makro ganz normal über Extras, Makros, Makro ausführen benutze, funktioniert das auch, ebenso über eine benutzerdefinierte Schaltfläche sowie eine Schaltfläche erstellt über die Formular Symbolleitse.

Wird die Schaltfläche jedoch über die Toolbox erstellt, druckt er zwei mal die Kopie aus. Kann mir jemand sagen, woran das liegt? Anbei der Code. Vielen Dank schon mal im voraus.

Private Sub RechnungDrucken_Click()
'
' RechnungDrucken Makro
' Makro am 17.11.2005 von aufgezeichnet
'

'
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, 6#, 204#, _
139.5, 43.5).Select
Selection.ShapeRange.Line.Visible = msoFalse
Selection.Characters.Text = Kopie
With Selection.Characters(Start:=1, Length:=5).Font
.Name = Arial
.FontStyle = Fett
.Size = 22
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Selection.HorizontalAlignment = xlCenter
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Selection.Delete
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.CommandBars(Drawing).Visible = False
End Sub
 
  • #2
Hallo Oil Bender,

dein Problem kann am Namen des Makros liegen (..._Click).
Ein Makro in einem Modul sollte diese Namensgebung vermeiden.

Ich hab den Makro so aufgeteilt, daß er von allen deinen genannten Aufruf-Stellen erreichbar ist und auch von einem Button auf der Rechnung.

Zunächst der funktionale Makro selbst:
Der sollte in einem Modul stehen

Code:
Option Explicit

Sub RechnungUndKopieDrucken()

    Dim ws As Worksheet, shp As Shape
    
    Set ws = ActiveSheet
    
   ->Textbox mit Kopie erzeugen
    Set shp = ws.Shapes.AddTextbox( _
                msoTextOrientationHorizontal, _
                6#, 204#, 139.5, 43.5)
    shp.Line.Visible = msoFalse
    shp.TextFrame.Characters.Text = Kopie
    With shp.TextFrame.Characters(Start:=1, Length:=5).Font
        .Name = Arial
        .FontStyle = Fett
        .Size = 22
    End With
    shp.TextFrame.HorizontalAlignment = xlCenter
    
   ->Kopie ausdrucken
    ws.PrintOut Preview:=True->für Test
   ->ws.PrintOut Copies:=1, Collate:=True
    
   ->Textbox wieder löschen
    shp.Delete
    
   ->Original ausdrucken
    ws.PrintOut Preview:=True->für Test
   ->ws.PrintOut Copies:=1, Collate:=True
    
    Set shp = Nothing: Set ws = Nothing

End Sub

Dann der Code zum Commendbutton:
- CommandButton über Toolbar auf Rechnung einfügen
- Eigenschaft.Caption = Rechnung drucken
- Eigenschaft.Name = RechnungDrucken   (hier ohne Leerzeichen)
- Eigenschaft.TakeFocusOnClick = False
- Eigenschaft.PrintObject = False

In die Codeseite der Rechnung:
Code:
Private Sub RechnungDrucken_Click()
 ->Voraussetzung:
 ->- CommandButton auf dem Tabellenblatt mit der Eigenschaft.Name = RechnungDrucken
 ->- dieser Makro muß in der Code-Seite des Tabellenblattes liegen
  
 ->Button darf nicht den Focus halten
 ->sonst kann die Textbox nicht manipuliert werden
  If RechnungDrucken.TakeFocusOnClick Then
    MsgBox ( _
    Bitte ändern Sie die Eigenschaft  & _
     ->TakeFocusOnClick' des Command-Buttons auf False, & vbLf & _
       da sonst der Makro nicht ausgeführt werden kann.)
  Else
    Call RechnungUndKopieDrucken
  End If
End Sub
Und ausprobieren.

Nach dem Ausprobieren müßtest du die Zeilen
ws.PrintOut Preview:=True
auskommentieren, und folgende Zeilen einkommentieren
ws.PrintOut Copies:=1, Collate:=True

Gruß Matjes :)
 
Thema:

Makroproblem mit Steuerelemente Toolbox

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.965
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben