VBA Problem mit Public Sub

crunch

Mitglied
Ich habe folgende Public Sub "speichern":

Code:
Public Sub speichern(Workbook As String, name As String)

MsgBox ("speichern?")

    ChDir "CRMupload"
    Workbook.SaveAs Filename:= _
        name, FileFormat:= _
        xlExcel8, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
                
End Sub

und einen Button "speichern":

Code:
Private Sub speichern_Click()
    Workbook = "ActiveWorkbook"
    name = "text.xls"
    speichern Workbook, name
End Sub

Leider passiert überhaupt nixht, wenn ich auf den Button drücke...irgendwelche Ideen.

Vielen Dank.
 
Irgendwie verwechselst du hier die Syntax der Befehle, deine speichern-Prozedur müsste so aussehen:
Visual Basic:
Public Sub Speichern(sWorkbook As String, sFilename As String)
 Dim Result 'Dimensionierungen
 Result = MsgBox("Speichern?", vbYesNo) 'Abfrage ob wirklich speichern, das Ergebnis muss dabei in eine Variable
 If Result = vbNo Then Exit Sub 'Wenn nein, dann raus aus der Prozedur
 Workbooks(sWorkbook).SaveAs Filename:=sFilename 'Speichere die Mappe
End Sub

Der Aufruf würde dann so aussehen:
Visual Basic:
Private Sub speichern_Click()
 Dim sWorkbook As String, sName As String 'Dimensionierungen
 sWorkbook = "Mappe1" 'Weise den Namen der Mappe zu
 'sWorkbook = ActiveWorkbook.Name 'wenn die aktuelle Mappe gemeint ist
 sName = "text.xls" 'Namen der Datei festlegen
 Speichern sWorkbook, sName
End Sub


Der Doc!
 
Ich habe folgende Public Sub "speichern":

Code:
Public Sub speichern(Workbook As String, name As String)
[..]
End Sub
und einen Button "speichern":
Code:
Private Sub speichern_Click()
    Workbook = "ActiveWorkbook"
    name = "text.xls"
[..]
End Sub
Hi crunch (und alle anderen Interessierten),

ich denke, dass in dem Code eine riesige Stolperfalle eingebaut ist. Verwende NIE Variablennamen, die es schon irgendwie in der Sprache gibt. Hier sind es das Workbook und der name, welche irgendwann dazu führen können, dass unmögliche Dinge passieren.

Zugegeben, das waren nicht die Auslöser, aber so wirst du verhindern, dass du irgendwann einmal wie irre einen Fehler suchst, der obwohl der Code sonst formal korrekt ist. DrSoong hat aus genau diesem Grund die Variablennamen auf sWorkbook und sName geändert (das "s" steht für den Variablentyp String).
 

Neue Beiträge

Zurück