Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1348to1352
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

mehrere Commandbuddons zusammen ausf

mehrere Commandbuddons zusammen ausf
05.02.2014 19:32:20
Andreas
Hallo Excelprofis,
ich benutze eine Vorlagedatei um Diese unter zuhilfenahme verschiedener Combo- und Textboxen unter anderen Namen abzuspeichern.
Bei diesem speichern sind nur der Teil des Inhaltes der Textboxen unterschiedlich.
Bisher benutze ich 15 CommandButtons zum speichern. Kann ich diese Vorgänge in einem CommandButton zusammenführen?
Bisher speichere ich die Kopien so:

Private Sub CommandButton2_Click()
Dim sFileName As String
Application.DisplayAlerts = True
Call externe_Verknüpfungen_entfernen
Sheets("Anwesenheit").Range("H5").Value = TextBox3.Text
If ComboBox15.Value  "" And TextBox3.Text  "" Then
sFileName = ActiveWorkbook.Path & "\" & (ComboBox19.Value & TextBox3.Text & ComboBox15. _
Value) & ".xlsb"
If Dir(sFileName)  "" Then
If MsgBox("Datei bereits vorhanden!" & vbLf & "Überschreiben?", vbYesNo, "Gebe bekannt ...  _
_") = vbYes Then
Kill sFileName
ActiveWorkbook.SaveCopyAs sFileName
Else
MsgBox "Datei wurde nicht gespeichert."
End If
Else
ActiveWorkbook.SaveCopyAs sFileName
End If
End If
End Sub
und

Private Sub CommandButton3_Click()
Dim sFileName As String
Application.DisplayAlerts = True
Sheets("Anwesenheit").Range("H5").Value = TextBox4.Text
If ComboBox15.Value  "" And TextBox4.Text  "" Then
sFileName = ActiveWorkbook.Path & "\" & (ComboBox19.Value & TextBox4.Text & ComboBox15. _
Value) & ".xlsb"
If Dir(sFileName)  "" Then
If MsgBox("Datei bereits vorhanden!" & vbLf & "Überschreiben?", vbYesNo, "Gebe bekannt ...  _
_") = vbYes Then
Kill sFileName
ActiveWorkbook.SaveCopyAs sFileName
Else
MsgBox "Datei wurde nicht gespeichert."
End If
Else
ActiveWorkbook.SaveCopyAs sFileName
End If
End If
End Sub

usw.

Habe von VBA nicht die Ahnung.
Kann mir bitte Jemand weiterhelfen.
Danke fürs lesen und die Hilfe!
mfg, Andreas

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 09:03:31
Beverly
Hi Andreas,
wenn alles in einen gemeinsamen Code soll, musst du irgendwo/irgendwie ein Kriterium vorgeben, anhand dessen festgestellt werden kann, ob nun TextBox3, TextBox4 usw. verwendet werden soll. Damit könnte man dann eine Select Case-Anweisung schreiben.


AW: mehrere Commandbuddons zusammen ausf
06.02.2014 09:24:54
Andreas
Hallo Beverly,
danke für die Antwort. Ich bin mir nicht sicher, ob ich meine Frage richtig formuliert habe. Die Textboxen 3 bis 17 werden aus einer anderen Datei befüllt. Bisher habe ich neben jeder Textbox einen CommandButton. Wenn in der Textbox etwas steht (es sind nicht immer alle gefüllt) wird durch den jeweiligen Commandbutton der jeweilige Textboxinhalt nach H5 geschrieben und die Datei dann gespeichert. Der Name der Datei setzt sich aus ComboBox19 & TextBox? & ComboBox15 zusammen. Wobei sich der Dateiname immer nur durch den Inhalt der Textbox unterscheidet.
Ich möchte also, dass die Datei so oft gespeichert wird (unter den genannnten Kriterien) wie in den Textfeldern 3 - 17 etwas steht.
Danke fürs lesen und die Hilfe!
mfg, Andreas

Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 10:50:41
Beverly
Hi Andreas,
den Namen der gespeicherten Mappe(n) in H5 zu schreiben ist nun sicher nicht mehr sehr sinnvoll, da am Ende nur der Name der zuletzt gespeicherten Arbeitsmappe erhalten bleibt, weil er ständig überschrieben wird.
Ob diese Zeile Application.DisplayAlerts = True erforderlich ist, entzieht sich meiner Kenntnis, da ich die Bedingungen in deiner Arbeitsmappe nicht kenne, aber normalerweise ist sie nicht erforderlich, da die Meldungen von Excel standardmäßig so eingestellt sind, dass sie angezeigt werden.
Private Sub CommandButton1_Click()
Dim sFileName As String
Dim oobTextBox As OLEObject
Application.DisplayAlerts = True
Call externe_Verknüpfungen_entfernen
If ComboBox15  "" Then
For Each oobTextBox In ActiveSheet.OLEObjects
If oobTextBox.progID = "Forms.TextBox.1" Then
' Sheets("Anwesenheit").Range("H5").Value = TextBox3.Text
If oobTextBox.Object.Value  "" Then
sFileName = ActiveWorkbook.Path & "\" & (ComboBox19.Value & oobTextBox.Object. _
Value & ComboBox15.Value) & ".xlsb"
If Dir(sFileName)  "" Then
If MsgBox("Datei bereits vorhanden!" & vbLf & "Überschreiben?", vbYesNo, "Gebe  _
bekannt ... ") = vbYes Then
Kill sFileName
ActiveWorkbook.SaveCopyAs sFileName
Else
MsgBox "Datei wurde nicht gespeichert."
End If
Else
ActiveWorkbook.SaveCopyAs sFileName
End If
End If
End If
Next oobTextBox
End If
End Sub


Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 11:24:50
Andreas
Hallo Beverly,
vielen Dank für die Hilfe. Habe den Code auf CommandButton2 gelegt. Es passiert aber leider nix. keine Fehlermeldung aber auch keine Speicherung.
Im übrigen ist es sehr wichtig den jeweiligen Wert aus den Textboxen vor dem speichern nach H5 zu schreiben.
Bis jetzt ist es ja so, dass bei betätigen von z.B. Commandbutton2 der Wert aus TextBox3 nach H5 geschrieben wird und dann eine Kopie gespeichert wird.
Als nächstes wird bei betätigen von z.B. Commandbutton3 der Wert aus TextBox4 nach H5 geschrieben und es wird eine Kopie gespeichert.
usw.
Also
Commandbutton2: Wert aus Textbox3 nach H5 dann speichern unter ComboBox19 + TextBox3 + ComboBox15
Commandbutton3: Wert aus Textbox4 nach H5 dann speichern unter ComboBox19 + TextBox4 + ComboBox15
Commandbutton4: Wert aus Textbox5 nach H5 dann speichern unter ComboBox19 + TextBox5 + ComboBox15
usw. bis Commandbutton16 - allerdings soll nur dann einen neue datei angelegt werden, wenn in der jeweiligen Textbox etwas steht.
mfg, Andreas

Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 11:49:07
Beverly
Hi Andreas,
weshalb bei dir nichts passiert weiß ich nicht, da ich deine Mappe nicht vorliegen habe. Bei mir läuft der Code über alle eingebetteten Objekte des Tabellenblattes, prüft ob es eine TextBox ist und wenn diese TextBox einen Inhalt hat, wird eine xlsb-Datei im Verzeichnis der gerade aktiven Arbeitsmappe abgespeichert und erhält den Namen, der sich ais dem inhalt der TextBox19, der laufenden TextBox und der TextBox15 zusammensetzt.


AW: mehrere Commandbuddons zusammen ausf
06.02.2014 12:08:45
Andreas
Hallo Beverly,,
ich weiß nicht ob das wichtig ist, die Textboxen, Comboboxen usw. sind auf einem UserForm.
Außerdem möchte ich dir für deine Mühe danken, ich hätte nicht gedacht dass es so kompliziert ist. Ich dachte es geht in der Art: nimm den Code von CommandButton2 dann den von Commandbutton3 usw.
mfg, Andreas

Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 12:41:34
Beverly
Hi Andreas,
in deinem Beitrag stand nichts, dass du dich auf ein UserForm beziehst, so etwas sollte man schon unbedingt erwähnen, weil es eben essentiell ist, wie du feststellen konntest. Eine hochgeladene Arbeitsmappe ist immer hilfreich - man muss als Helfer nichts nachbauen, was dann nicht mit dem Original übereinstimmt.


AW: mehrere Commandbuddons zusammen ausf
06.02.2014 12:48:50
Andreas
Ich habe mal eine Beispielmappe hochgeladen. Die Werte in den Textboxen 3 bis 17 müssen händisch eingegeben werden, da ja die Ursprungsdatei fehlt, aus der diese Werte sonst gezogen werden.
https://www.herber.de/bbs/user/89134.xlsm
mfg, Andreas

Anzeige
AW: mehrere Commandbuddons zusammen ausf
06.02.2014 15:09:01
Beverly
Hi Andreas,
jedes Steuerelement auf einem UserForm besitzt die Eigenschaft Tag - hat nichts mit dem deutschen "Tag" zu tun sondern dem englischen "tag" (Etikett, Anhängsel usw.) und wurde speziell für die Programmierer geschaffen, um dort Informationen abzulegen, die man im Code dann weiterverwenden kann. Schreibe also in die Tag-Eigenschaften der TextBoxen 3 bis 17 z.B. ein "x". Beim Schleifendurchlauf über alle Steuerelemente des UserForms kann dann sehr einfach geprüft werden, ob es sich um eine dieser TextBoxen handelt und wenn sie nicht leer ist, wird dann die Mappe unter zuhilfenahme des Inhalts dieser TextBox abgespeichert.
Private Sub CommandButton2_Click()
Dim sFileName As String
Dim ctrTextBox As Control
Application.DisplayAlerts = True
Call externe_Verknüpfungen_entfernen
If ComboBox15  "" Then
For Each ctrTextBox In Me.Controls
' pürfen ob in Tag-Eigenschaft ein "x" steht
If ctrTextBox.Tag = "x" Then
If ctrTextBox  "" Then
Sheets("Anwesenheit").Range("H5").Value = ctrTextBox
sFileName = ActiveWorkbook.Path & "\" & (ComboBox19.Value & ctrTextBox.Value &  _
ComboBox15.Value) & ".xlsb"
If Dir(sFileName)  "" Then
If MsgBox("Datei bereits vorhanden!" & vbLf & "Überschreiben?", vbYesNo, "Gebe  _
bekannt ... ") = vbYes Then
Kill sFileName
ActiveWorkbook.SaveCopyAs sFileName
Else
MsgBox "Datei wurde nicht gespeichert."
End If
Else
ActiveWorkbook.SaveCopyAs sFileName
End If
End If
End If
Next ctrTextBox
End If
End Sub


Anzeige
Danke: mehrere Commandbuttons
06.02.2014 16:25:28
Andreas
Hallo Beverly,
vielen, vielen Dank für deine Hilfe und die Mühe die du dir gemacht hast. Es funktioniert super.
Einen schönen Tag noch.
mfg, Andreas

Habe es hinbekommen
06.02.2014 15:03:02
Andreas
Ich habe es hinbekommen.
Ich habe die Bezeichnung des Codes der Commandbuttons umbenannt und rufe diese mit einem Commandbutton per Call nacheinander auf.
Das ist vieleicht nicht die eleganteste Lösung, funktioniert aber super.
Private Sub CommandButton2_Click()
Call Button3
Call Button4
Call Button5
Call Button6
Call Button7
Call Button8
Call Button9
Call Button10
Call Button11
Call Button12
Call Button13
Call Button14
Call Button15
Call Button16
End Sub
Danke fürs lesen und die Hilfe!
mfg, Andreas
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige