Pop-up fenster in excel

hallo,

ist es möglich, dass sich beim start einer excel datei ein pop-up fenster öffnet, in dem ich daten eingeben kann? nach eingabe dieser daten, soll excel anhand von hinterlegten formeln mir entsprechende werte berechnen.

das pop-up fenster möglich sind, ist mir bewusst. jedoch hab ich nichts gefunden, wo man in diesen fenstern auch daten eintragen kann.

vielen dank für eure hilfe!

Hallo Alex,

ist es möglich, dass sich beim start einer excel datei ein
pop-up fenster öffnet, in dem ich daten eingeben kann? nach
eingabe dieser daten, soll excel anhand von hinterlegten
formeln mir entsprechende werte berechnen.

ja, das ist möglich.
In Excel und anderen Office-Anwendungen gibt es dafür Userforms, die man im VBA-Editor nach seine Wünschen und Notwendigkeiten erzeugen und gestalten kann. Die Steuerlemente des Userforms kannst du entweder direkt mit den Eingabezellen verlinken (im Eigenschaftsfenster des VBA-Editors) oder aber du überträgst vor dem Schliessen des Formulars die Werte der Steuerelemente per Makro in die Eingabezellen.

Es ist aber wesentlich einfacher -speziell für Anfänger- ein Tabellenblatt als Eingabeformular zu gestalten. Dazu „einfach“ alle Eingabezellen als nicht gesperrt formatieren und zum Schluss das Blatt schützen - ggf. mit Kennwort. Die zugehörigen Berechnungen kann man dann ja ggf. auf einem 2. Tabellenblatt machen.

Damit dieses Userform/diese Tabelle beim Öffnen der Datei angezeigt wird, muss du im VBA-Editor unter „DieseArbeitsmappe“ eine entsprechende Ereignis-Prozedur einfügen.
Beispiel:

Private Sub Workbook\_Open()
 Userform1.Show
 'oder
 Worksheets("Eingabe").Activate
End Sub

Gruß
Franz

Hallo Franz,

vielen Dank für Deine Antwort. Ich habe noch eine Frage zu den UserForms:

Ich habe beispielweise 3 textboxen. die daten, die in den textboxen eingegeben werden, sollen immer in die selben spalten in der tabelle eingefügt werden. also beispiel:

ich gebe ein in textbox1: name textbox2: vorname textbox3: nummer

name, vorname und nummer sollen dann immer in E12, E13 und E14 übertragen werden (überschreibt quasi den vorherigen eintrag)

über den befehl ROW + 0 (s.u.) schaffe ich es auch, dass überschrieben wird. aber wie definiere ich beim klick auf den commandbutton1, dass die daten aus den textboxen genau in die felder E12, E13 und E14 meiner tabelle gebracht werden?

Private Sub CommandButton1_Click()
z = Range("???").End(xlDown).Row + 0
If z > 65000 Then z = 2
Cells(z, 1) = TextBox1
Cells(z, 2) = TextBox2
Cells(z, 3) = TextBox3

was genau bezeichnet range dabei? und end(xldown)?

Vielen Dank für Deine/Eure Bemühungen

Hallo Alex,

name, vorname und nummer sollen dann immer in E12, E13 und E14
übertragen werden (überschreibt quasi den vorherigen eintrag)

Private Sub CommandButton1_Click()
Range(„E12“) = Userform1.Textbox1
Range(„E13“) = Userform1.Textbox2
Range(„E14“) = Userform1.Textbox3
End Sub

über den befehl ROW + 0

Das + 0 kannste weglassen.

was genau bezeichnet range dabei? und end(xldown)?

Mit Range sprichst du zellen, Zellbereiche an.
msgbox Range(„A1“).End(xldown).row

kriegst du die Zeilennummer angezeigt in der du stehst wenn du in A1 stehst und Strg+Pfeilabwärts drückst.

Gruß
Reinhard

Hallo Franz,

ich habe es hinbekommen, dass die Werte in die entsprechenden Spalten meiner Tabelle eingetragen werden. Nur noch eine Frage:

Wenn ich Zahlen eingeben, werden diese in der Tabelle als „als text gespeicherte zahl“ ausgegeben. wie kann es so abändern, dass sie wirkliche zahl gespeichert werden?

vielen dank für die hilfe

Hallo Alex,

ich habe es hinbekommen, dass die Werte in die entsprechenden
Spalten meiner Tabelle eingetragen werden. Nur noch eine
Frage:

Wenn ich Zahlen eingeben, werden diese in der Tabelle als „als
text gespeicherte zahl“ ausgegeben. wie kann es so abändern,
dass sie wirkliche zahl gespeichert werden?

Zahlen und Datumseingaben als Inhalte von Userform-Steuerelementen müssen beim Schreiben in Tabellen von Text in Zahlen/Datum umgewandelt werden.

Gruß
Franz

'Beispiel für Zahl:
If Me.Textbox1 = "" Then
 Cells(Z, 5).Value = 0
 'oder
 Cells(Z, 5).ClearContents
ElseIf IsNumeric(Me.Textbox1) Then
 Cells(Z, 5).Value = CDbl(Me.Textbox1) 'Gleitkommazahl
 'oder je nach gewünschtem Zahlentyp
 Cells(Z, 5).Value = CLng(Me.Textbox1) 'Ganze Zahl
 Cells(Z, 5).Value = CInt(Me.Textbox1) 'Ganze Zahl aber andere Umwandlungs-Regel als Clng
Else
 MsgBox "Eingabe für Textbox1 ist keine Zahl!"
 Exit Sub
End If
'Beispiel für Datum:
If Me.Textbox2 = "" Then
 Cells(Z, 5).ClearContents
 'oder wenn Pflichtfeld
 MsgBox "Eingabe für Datum fehlt!"
 Exit Sub
ElseIf IsDate(Me.Textbox2) Then
 Cells(Z, 5).Value = CDate(Me.Textbox2)
Else
 MsgBox "Eingabe für Textbox2 ist kein gültiges Datum!"
 Exit Sub
End If

Hallo Reinhard,

vielen Dank für Deine Hilfe. Weißt Du vllt auch, wie die „als text gespeicherte zahl“ (wenn ich daten in tabelle übertrage), direkt als „normale“ zahl übertragen werden?

vielen dank

vielen Dank für Deine Hilfe. Weißt Du vllt auch, wie die „als
text gespeicherte zahl“ (wenn ich daten in tabelle übertrage),
direkt als „normale“ zahl übertragen werden?

Hallo Alex,

hat das Franz nicht schon geschrieben?

Range(„E12“) = Cdbl(Userform1.Textbox1)

Schau in der Hilfe nach Cdbl dann stößt du auch auf CInt, Clng usw, mußt dir halt aussuchen was du möchtest.

Gruß
Reinhard