Hallo,
ich beschäftige mich erst seit kurzem mit Visual Basic in Verbindung mit Excel und bin auf folgendes Problem gestossen.
Ich habe in eine UserForm mehrere Werkzeuge eingefügt (CommandButtons etc.)und diese mit Code hinterlegt.
Wie kann ich diese Buttons fest in ein ExcelSheet einbinden, so dass alles als .xls abgespeichert werden kann und beim nächsten Mal nicht der VB Editor geöffnet werden muss?
Hey Carsten,
eigentlich geht es um folgendes.
Ich muss eine Schnittstelle von einem Simulationstool zu Excel machen.
Über Excel muss ich in der Lage sein Eingabedaten in das Simulationstool zu laden.
Der Benutzer muss, bevor er die Simulation über Excel startet (CommandoButton RunSimulation) mehrere Auswahlboxen und Daten in Textfelder eingeben. (die ich fest in ein ExcelSheet einbinden will und die bisher noch separat auf einer Userform sind)
Je nach Klick und Eingabe werden gewisse Daten in ExcelZellen geschrieben und in das Simulationstool geschrieben.
Grüssle
Johanna
Hallo Johanna.
:
Bist Du auf der Suche nach einer Möglichkeit, Dein UserForm
per Mausklick oder Tasten-Kombination aus Excel heraus
aufzurufen?
Um einen Commandbutton oder eine TextBox direkt auf einem Tabellenblatt abzulegen, kannst Du folgendermaßen vorgehen:
Gehe über die Menüs „Ansicht“ > „Symbolleisten“ auf „Steuerelement-Toolbox“ und klicke diese an.
Wenn nun die Steuerelement-Toolbox eingeblendet ist, dann kannst Du dort ein Steuerelement auswählen und auf dem Tabellenblatt ablegen.
Um Code für das Steuerelement zu schreiben, bauchst Du nur darauf doppelklicken, dann öffnet sich der Visual Basic-Editor.
Sobald Du ein Steuerelement auf dem Tabellenblatt platziert hast, wird in den Entwurfsmodus umgeschaltet, was kaum zu erkennen ist. Die
zugehörige Schaltfläche zum Abschalten des Entwurfsmodus ist einmal im Visualbasic-Editor zu finden, aber auch auf der Symbolleiste „Steuerelement-Toolbox“. (Der Entwurfsmodus muß zum Testen dann ja abgeschaltet werden)
Ich hoffe, das war es, was Du gesucht hast und ich konnte Dir damit helfen.
Hey Carsten,
das war genau was ich wissen wollte, vielen Dank für deine Hilfe, das hat mir sehr geholfen.
Jetzt funktioniert es endlich
Vielleicht könntest du mir noch mal helfen, ich möchte für die Eingaben meiner Textboxen nur Zahlen und Punkte aber keine Buchstaben zulassen, das funktioniert bereits!
Der Benutzer soll aber auch nur EINEN Punkt eingeben können z.B 3.4 und nicht aus Versehen 3…4 eingeben.
Ich hab schon mehrere Funktionen geschrieben, aber keine funktioniert richtig.
Sobald ein zweiter Punkt eingegeben wird soll eine Fehlermeldung kommen.
Viele Grüsse aus München
Johanna
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Vielleicht könntest du mir noch mal helfen, ich möchte für die
Eingaben meiner Textboxen nur Zahlen und Punkte aber keine
Buchstaben zulassen, das funktioniert bereits!
Der Benutzer soll aber auch nur EINEN Punkt eingeben können
z.B 3.4 und nicht aus Versehen 3…4 eingeben.
Ich hab schon mehrere Funktionen geschrieben, aber keine
funktioniert richtig.
Sobald ein zweiter Punkt eingegeben wird soll eine
Fehlermeldung kommen.
Hi Johanna,
Option Explicit
Private Sub TextBox1\_Change()
If TextBox1 = "" Then Exit Sub
If Not IsNumeric(TextBox1) Then
MsgBox "zahlFehler"
Application.EnableEvents = False
TextBox1 = ""
End If
pos = InStr(TextBox1, ".")
If pos \> 0 Then
If InStr(pos + 1, TextBox1, ".") \> 0 Then
MsgBox "punktFehler"
Application.EnableEvents = False
TextBox1 = ""
End If
End If
Application.EnableEvents = True
End Sub
Dieser Code dürfte Deinen Wünschen entsprechend funktionieren.
die Eingabe eines zweiten Punktes wird schon beim Tippen verhindert
man kann eine Dezimal-Zahl auch ohne führende Null beginnen
der Code ist nicht rekursiv
man braucht keine MessageBox bestätigen
Public PunktGesetzt As Boolean
Private Sub TextBox1_Change()
PunktGesetzt = CBool(InStr(1, TextBox1.Text, Chr(46)))'Für’s Komma die 44 hinschreiben
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57, 8 'Null bis Neun, Backspace
Case 46 'Punkt (Für’s Komma die 44 hinschreiben)
If PunktGesetzt = True Then
KeyAscii = 0
Beep 'Optional (Falls gewünscht, dann hier den Code für die MessageBox)
End If
PunktGesetzt = True 'Diese Anweisung kann sogar noch weg
Case Else
KeyAscii = 0
Beep 'Optional
End Select
End Sub
Wenn Du willst, kannst Du ihn ja mal ausprobieren. Füge ihn dazu so in das Code-Fenster ein, dass die erste Zeile ganz oben im Code-Fenster steht, damit die Variable „PunktGesetzt“ im Deklarations-Bereich steht.