Optionsfeld als Pflichtfeld - Excel - VBA
Hallo zusammen,
ich bin gerade dabei meinen ersten Makro zu schreiben und komme leider nicht weiter.
Die Aufgabe ist, denke ich zumindest, gar nicht so schwer, ich weiß nur nicht wie man es in eine Programmiersprache umwandelt.
Aufgabe ist Folgendes:
Ich habe 6 Optionsbuttons eingefügt von denen einer ausgewählt werden soll (es lässt sich auch nur einer auswählen). Falls keine Option gewählt wird kann das Dokument nicht gespeichert werden.
Weiter oben im Dokument hatte ich das Gleiche schon für bestimmte Pflichtfelder vorgenommen.
Ich denke mein Problem ist es, die Optionen zu definieren.
Ich wage es jetzt mal euch meinen Anfängercode zu präsentieren Es geht also nur um den letzten Teil, das Obere funktioniert.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not ActiveWorkbook.BuiltinDocumentProperties.Item("Content Status") = "Entwurfsmodus" Then
For Each cell In Range("mandatory_field")
If cell.Value = "" Then
MsgBox "Det obligatoriska fältet måste fyllas i!", vbCritical
Cancel = True
Exit For
End If
Next
End If
If Not (OptionButton8.Value = True Or OptionButton9.Value = True Or OptionButton10.Value = True Or OptionButton11.Value = True Or OptionButton12.Value = True Or OptionButton13.Value = True) Then
MsgBox "Välj krediteringskod!", vbCritical
End If
End Sub
Fehler: Laufzeitfehler 424
Objekt erforderlich
Vielen lieben Dank schon mal!!
Beste Grüße,
Sylvia
ich bin gerade dabei meinen ersten Makro zu schreiben und komme leider nicht weiter.
Die Aufgabe ist, denke ich zumindest, gar nicht so schwer, ich weiß nur nicht wie man es in eine Programmiersprache umwandelt.
Aufgabe ist Folgendes:
Ich habe 6 Optionsbuttons eingefügt von denen einer ausgewählt werden soll (es lässt sich auch nur einer auswählen). Falls keine Option gewählt wird kann das Dokument nicht gespeichert werden.
Weiter oben im Dokument hatte ich das Gleiche schon für bestimmte Pflichtfelder vorgenommen.
Ich denke mein Problem ist es, die Optionen zu definieren.
Ich wage es jetzt mal euch meinen Anfängercode zu präsentieren Es geht also nur um den letzten Teil, das Obere funktioniert.
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not ActiveWorkbook.BuiltinDocumentProperties.Item("Content Status") = "Entwurfsmodus" Then
For Each cell In Range("mandatory_field")
If cell.Value = "" Then
MsgBox "Det obligatoriska fältet måste fyllas i!", vbCritical
Cancel = True
Exit For
End If
Next
End If
If Not (OptionButton8.Value = True Or OptionButton9.Value = True Or OptionButton10.Value = True Or OptionButton11.Value = True Or OptionButton12.Value = True Or OptionButton13.Value = True) Then
MsgBox "Välj krediteringskod!", vbCritical
End If
End Sub
Fehler: Laufzeitfehler 424
Objekt erforderlich
Vielen lieben Dank schon mal!!
Beste Grüße,
Sylvia
Please also mark the comments that contributed to the solution of the article
Content-Key: 265708
Url: https://administrator.de/contentid/265708
Printed on: April 26, 2024 at 06:04 o'clock
9 Comments
Latest comment
Hi,
verwende bitte Code-Tags.
Ich denke, Du musst Cancel unten auch noch auf True setzen, wenn nicht alle Bedingungen zum Speichern erfüllt sind. (Zeile 14)
E.
Edit: Ach ja .... Wo kommt denn der Laufzeitfehler? Welche Zeile?
E.
verwende bitte Code-Tags.
Ich denke, Du musst Cancel unten auch noch auf True setzen, wenn nicht alle Bedingungen zum Speichern erfüllt sind. (Zeile 14)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not ActiveWorkbook.BuiltinDocumentProperties.Item("Content Status") = "Entwurfsmodus" Then
For Each cell In Range("mandatory_field")
If cell.Value = "" Then
MsgBox "Det obligatoriska fältet måste fyllas i!", vbCritical
Cancel = True
Exit For
End If
Next
End If
If Not (OptionButton8.Value Or OptionButton9.Value Or OptionButton10.Value Or OptionButton11.Value Or OptionButton12.Value Or OptionButton13.Value) Then
MsgBox "Välj krediteringskod!", vbCritical
Cancel = True
End If
End Sub
E.
Edit: Ach ja .... Wo kommt denn der Laufzeitfehler? Welche Zeile?
E.
Hallo Sylvia123!
Ansonsten macht es Sinn, einen OptionsButton in den Eigentschaften mit 'Value=True ' als Standard zu definieren...
Grüße Dieter
Fehler: Laufzeitfehler 424
Ich vermute mal, dass mindestens ein OptionButton nicht existiert oder Du hast Formular-Buttons anstatt ActiveX-Buttons verwendet?Ansonsten macht es Sinn, einen OptionsButton in den Eigentschaften mit 'Value=True ' als Standard zu definieren...
Grüße Dieter
Hallo Sylvia123!
Das andere Problem habe ich vorhin leider übersehen. Da der Code sich nicht im Sheet befindet, musst Du es so machen:
Grüße Dieter
Was meinst du mit "einen OptionsButton in den Eigentschaften mit 'Value=True ' als Standard zu definieren..."?
Es kein eigentlich nur ein OptionButton mit True definiert werden, zumindest wenn sie ein und denselben 'GroupName' haben...Das andere Problem habe ich vorhin leider übersehen. Da der Code sich nicht im Sheet befindet, musst Du es so machen:
With Sheets("Tabellenname")
If Not (.OptionButton8.Value Or .OptionButton9.Value Or .OptionButton10.Value Or .OptionButton11.Value Or .OptionButton12.Value Or .OptionButton13.Value) Then
MsgBox "Välj krediteringskod!", vbCritical
Cancel = True
End If
End With
Grüße Dieter
Wie vermutlich zu erkennen war arbeite ich gerade im Ausland. Deshalb habe ich mich gerade gefragt ob solche Dinge wie:
"Entwurfmodus" automatisch übersetzt werden, wenn man an einem ausländischen PC arbeitet? (So wie es auch mit
Excel Formeln wie SVERWEIS usw. passiert)
Danke auch hier schon mal
"Entwurfmodus" automatisch übersetzt werden, wenn man an einem ausländischen PC arbeitet? (So wie es auch mit
Excel Formeln wie SVERWEIS usw. passiert)
Danke auch hier schon mal
Unwahrscheinlich. Du vergleichst hier mit einem fixen String. Das musst irgendwie variabel gestalten.
Vielleicht so
...
If Not IstEntwurfsModus Then
...
end if
...
function IstEntwurfsModus as boolean
Select Case ActiveWorkbook.BuiltinDocumentProperties.Item("Content Status")
case "Entwurfsmodus", "BlaBlaBla", "SoSoSo" 'Hier ein paar "gängige" Sprachen berücksichtigen.
IstEntwurfsModus = true
else
IstEntwurfsModus = false
end select
end function
E.