Visual Basic und Excel

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?

Vielen Dank für Eure Hilfe.

Gruss
Johanna

Hallo Johanna,

Ich habe in eine UserForm mehrere Werkzeuge eingefügt

Hast du diese UserForm in Visual Basic oder in VBA (Excel) erstellt?

Was willst du mit dieser UserForm bzw mit den Buttons usw erreichen? was soll das für ein „Programm“ werden?

Wenn sich der VB-Code nur auf Excel bezieht, dann würde ich das mit VBA machen…

MFG
Michael

Hallo Johanna.

Bist Du auf der Suche nach einer Möglichkeit, Dein UserForm per Mausklick oder Tasten-Kombination aus Excel heraus aufzurufen?

Viele Grüße
Carsten

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?

Viele Grüße
Carsten

Hallo Johanna.

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.

Viele Grüße
Carsten

Hey Carsten,
das war genau was ich wissen wollte, vielen Dank für deine Hilfe, das hat mir sehr geholfen.
Jetzt funktioniert es endlich :wink:

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

Gruß
Reinhard

Hallo Johanna.

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.

Viele Grüße
Carsten

Hey Carsten, Reinhard

vielen Dank euch beiden!

Grüsse
Johanna