Das Archiv des Excel-Forums

InputBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
    Bild

    Betrifft: InputBox
    von: karli

    Geschrieben am: 28.09.2003 06:50:03

    Guten Morgen Forum
    Aus einer Userform1 starte ich per commandbutton eine Inputpox!
    der eingegebene wert zb: 08:00 soll in die zellen "R11:R42"Reingeschrieben werden!

    frage:
    WIE KOPIERE ICH DEN WERT IN DIE ZELLEN??
    WIE SOLL DER GANZE CODE AUSSEHEN??
    Wobei zu beachten ist das ein bestimmtes format sein muß(uhrzeit-format)
    und bei falscher eingabe eine msgbox warnt.

    
    Sub EingabeKopieren()
    InputBox ("Geben Sie Ihre Soll Zeit ein! Beispiel: 8:00 (pro Tag)")
    End Sub
    


    karli
    Bild


    Betrifft: Zu Teil 1 in tabelle schreiben
    von: andreas e
    Geschrieben am: 28.09.2003 07:51:54

    Hallo karli,
    hier der code um in die Tabelle zu schreiben.
    Die verprobung ist relativ kompliziert, muss ich noch ein bischen dran testen.
    
    Private Sub CommandButton1_Click()
    azeit = InputBox("Geben Sie Ihre Soll Zeit ein! Beispiel: 8:00 (pro Tag)")
    Sheets("Tabelle1").Range("A1:A7").Value = azeit
    End Sub
    

    Gruß
    Andreas E

    http://www.skripteundaufgaben.de
    viele kostenlose Downloads und Links zu EXCEL und mehr


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 08:19:05

    hi Andreas
    danke für deinen vorschlag aber den kann ich nicht verwenden weil,
    die tabelle1 immer einen anderen namen hat.
    sie wird vorher erstellt,so das ich den namen nicht kenne!

    ich habe einstweilen folgende lösung die funkt gefunden!
    aber die abfrage ob es numeric oder so ist kann ich nicht machen.
    kanst du mir das in den code noch einfügen?


    
    Sub ZEIT EINFÜGEN()
    Range("R11").Value = InputBox("Geben Sie Ihre Soll Zeit ein! Beispiel: 8:00 (proTag)", "Eingabeformular", "8:00")
    Range("R11").Select'kopiert den wert runter
    Selection.Copy
    Range("R12:R41").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
    False, Transpose:=False
    ActiveWindow.SmallScroll Down:=-30
    Application.CutCopyMode = False
    End Sub
    


    danke
    karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 08:27:58

    Hallo Karli,
    da du nicht schreibst, dass der Bereich der Stundeneingabe beschränkt (z.B. maximal 8 Stunden) habe ich den Punkt mal offen gelassen.

    Option Explicit
    Public Sub eingabe()
    Dim antwort As String, index As Integer, falsch As Boolean
    Do
    antwort = InputBox("Geben Sie Ihre Sollzeit ein! Beispiel: 8:00 (pro Tag)", "Eingabe")
    antwort = Trim(antwort)
    For index = 1 To Len(antwort)
    If Not IsNumeric(Mid(antwort, index, 1)) Then Mid(antwort, index, 1) = ":"
    Next
    If InStr(1, antwort, ":") = 0 Then antwort = antwort & ":00"
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) = 0 Then antwort = antwort & "00"
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) = 1 Then antwort = antwort & "0"
    If Not IsNumeric(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) Then antwort = 0 & antwort
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) > 2 Then falsch = True
    If Len(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) = 0 Or Len(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) > 2 Then falsch = True
    If InStr(InStr(antwort, ":") + 1, antwort, ":") <> 0 Then falsch = True
    If IsNumeric(Mid(antwort, InStr(1, antwort, ":") + 1)) Then
    If CDbl(Mid(antwort, InStr(1, antwort, ":") + 1)) > 59 Then falsch = True
    Else
    falsch = True
    End If
    If Not falsch Then If CDbl(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) = 0 And CDbl(Mid(antwort, InStr(1, antwort, ":") + 1)) = 0 Then falsch = True
    If Not falsch Then Exit Do
    MsgBox "Ihre Eingabe hatte nicht das richtige Format," & vbNewLine & "oder es wurde eine ungültige Zeitangabe gemacht.", 48, "Hinweis"
    falsch = False
    Loop
    With ActiveSheet.Range("R11:R42")
    .NumberFormat = "[h]:mm"
    .Value = antwort
    End With
    End Sub
    


    Code eingefügt mit: Excel Code Jeanie

    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 08:40:05

    hi NEPUMUK
    VIELE VIELEN DANK SUPER!!
    ich habe deinen code 1:1 in modul1 kopiert!FUNKT
    ist das ok?oder muß ich ihn in ein classenmodul reinkopieren?
    WEIL Public Sub eingabe()warum publik??
    UND NICHT OHNE PUBLIC??

    DANKE
    KARLI


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 08:47:07

    Hallo Karli,
    wenn du den Code im Klassenmodul der Userform unterbringst, dann kannst du auch "Private" benutzen. Wenn du ihn in einem "normales" Modul nutzt, dann muss es "Public" lauten das er sonst vom Aufruf in der Userform nicht gefunden wird. Außer du machst den Umweg über Application.Run was aber nicht gerade sauber programmiert aussieht.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 08:59:40

    hi Nepumuk
    danke nochmal alles klar!!

    frage zum gestrigen beitrag hab ich jetzt erst gesehen??
    die arbeitsmappe die du reingestellt hast,
    welches macro muß ich starten??

    
    Private Sub ControlEnableDisable(intId As Integer, bolStatus As Boolean)
    Dim Steuerelement As CommandBarControl, SuchBar As CommandBar
    On Error Resume Next
    For Each SuchBar In Application.CommandBars
    Set Steuerelement = SuchBar.FindControl(ID:=intId, Recursive:=True)
    If Not Steuerelement Is Nothing Then Steuerelement.Enabled = bolStatus
    Next
    End Sub
    

    kenn mich nicht ganz aus wie das gedacht ist!
    dieser code verlangt ein macro??

    danke
    karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 09:08:36

    Hallo Karli,
    das Programm wird automatisch beim öffnen der Mappe gestartet. Geh mal in der VBA-Editor und mach im Projektexplorer einen Doppelklick auf "DieseArbeitsmappe" oder von der normalen Exceloberfläche einen Rechtklick auf das Icon in der Menüleiste neben Datei und dann Code anzeigen anklicken. Damit bist du im Klassenmodul der Mappe und dort siehst du, was beim öffnen passiert (Workbook_Open). Das Programm das du meinst, wird über die Sub's "schutz_ein" bzw. "schutz_aus" angesteuert.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 09:18:28

    HI NEPUMUK
    SUPER JETZT HAB ICH ES ENDECKT GENAU DAS BRAUCH ICH!
    nur hätte ich diese auswahlfenster lieber in der userform1
    geht das??
    HIER MEIN CODE (leider sehr schlampig)
    'Option Explicit
    
    Sub neuesBlatt()
    Application.ScreenUpdating = False
    'Dim AnzahlBlätter As String
    'Dim Blattname As String
    On Error Resume Next
    If Err.Number <> 0 Then
    Exit Sub
    End If
    AnzahlBlätter = Sheets.Count
    Blattname = InputBox("Bravo gut gemacht !Sie erstellen jetzt ein neues Monat.  Geben Sie einen Namen des Monates ein und danach das Jahr!     Beispiel : Okt.03", _
    "Neues Blatt erstellen")
    If Blattname = "" Then
    ActiveCell.Select
    Else
    Sheets("Leeres Muster").Copy After:=Sheets(AnzahlBlätter)
    With ActiveSheet
    .Visible = True 'kopiertes Blatt sichtbar machen
    .Name = Blattname 'Name zuweisen
    '.Unprotect 'Blattschutz aufheben anbieten
    End With
    End If
    Call eingabe
    Range("B11").Select
    Unload UserForm1
    Application.ScreenUpdating = True
    End Sub
    

    Public
    
    Sub eingabe()
    Dim antwort As String, index As Integer, falsch As Boolean
    Do
    antwort = InputBox("Geben Sie Ihre Sollzeit ein! Beispiel: 8:00 (pro Tag)", "Eingabe")
    antwort = Trim(antwort)
    For index = 1 To Len(antwort)
    If Not IsNumeric(Mid(antwort, index, 1)) Then Mid(antwort, index, 1) = ":"
    Next
    If InStr(1, antwort, ":") = 0 Then antwort = antwort & ":00"
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) = 0 Then antwort = antwort & "00"
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) = 1 Then antwort = antwort & "0"
    If Not IsNumeric(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) Then antwort = 0 & antwort
    If Len(Mid(antwort, InStr(1, antwort, ":") + 1)) > 2 Then falsch = True
    If Len(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) = 0 Or Len(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) > 2 Then falsch = True
    If InStr(InStr(antwort, ":") + 1, antwort, ":") <> 0 Then falsch = True
    If IsNumeric(Mid(antwort, InStr(1, antwort, ":") + 1)) Then
    If CDbl(Mid(antwort, InStr(1, antwort, ":") + 1)) > 59 Then falsch = True
    Else
    falsch = True
    End If
    If Not falsch Then If CDbl(Mid(antwort, 1, InStr(1, antwort, ":") - 1)) = 0 And CDbl(Mid(antwort, InStr(1, antwort, ":") + 1)) = 0 Then falsch = True
    If Not falsch Then Exit Do
    MsgBox "Ihre Eingabe hatte nicht das richtige Format," & vbNewLine & "oder es wurde eine ungültige Zeitangabe gemacht.", 48, "Hinweis"
    falsch = False
    Loop
    With ActiveSheet.Range("R11:R41")
    .NumberFormat = "[h]:mm"
    .Value = antwort
    End With
    End Sub
    


    danke karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 09:54:56

    Hallo Karli,
    da sind aber ein paar Ungereimtheiten drin.

    1. Application.ScreenUpdating = False - bewirkt, dass der Bildschirm nicht aktualisiert wird. Verschieb mal deine Userform und schau was dabei passiert.

    2. On Error Resume Next - bewirkt, dass bei einem Programmfehler das Programm in der nächsten Zeile weitermacht. Aber der Rest der Anweisungen:
    If Err.Number <> 0 Then
    Exit Sub
    End If
    ist Unsinn, da nach der On Error-Anweisung noch kein Fehler passiert sein kann.

    3. Du deklarierst deine Variablen nicht, dass heißt, jede Variable hat den Datentyp Variant und benötigt daher 1. relativ viel Speicher und 2. müssen die Variablen jedes mal beim zuweisen an eine Eigenschaft automatisch konvertiert werden, was nicht gerade sehr schnell geht 3. wenn du dich bei einem Variablennamen einmal verschreibst, kannst du lange (ich habe Programme mit mehreren hundert Zeilen) suchen, wo der Fehler herrührt.

    4. ActiveCell.Select - eine aktive Zelle ist schon selektiert.

    5. AnzahlBlätter = Sheets.Count - wenn du diese Variable sowieso nur einmal benutzt, dann kannst du auch - Sheets("Leeres Muster").Copy After:=Sheets(Sheets.Count) schreiben. Das spart schon wieder eine Zuweisung und damit Speicherplatz und Zeit.

    6. Du machst keinerlei Prüfung was der User als Blattnamen eingibt und ob dieses Blatt nicht schon existiert.

    Ich benötige, um dir die Comboboxen in deine Userform einzubauen die Userform. Also die Userform exportieren und mir schicken (kaffl-nuernberg@t-online.de). Es müssen zwei Dateien sein, eine mit der Dateiendung .frm und eine mit .frx. Und wie war das mit der Zelle K3 in der der Name für die Kopie der Tabelle "Leeres Muster" steht? Davon sehe ich gar nichts in deinem Code.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 10:36:27

    hi nepumuk
    also meine userform ist nix besonderes nur 2 commandbuttons
    mach ruhig eine neue und ich kopier deine userform zu mir rüber.
    oder besser erstelle die ganze tabelle und poste sie so wie vorher.

    zu deiner frage:
    Und wie war das mit der Zelle K3 in der der Name für die Kopie der Tabelle "Leeres Muster" steht? Davon sehe ich gar nichts in deinem Code.
    es ist nicht mehr k3 sonder L3 weil eine spalte dazugekommen ist.
    und die tabelle ist versteckt xlhiden.l3 weil ich derzeit ja das mit der inputbox eintrage OkT.03 aber restelle du es mit auswahl in L3=Tabnahme:
    in l3 ist ein gültigkeits fenster wo man auswählen kann .
    Danke
    karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 10:44:56

    Hallo Karli,
    und aus welcher Tabelle soll der Name geholt werden?
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 11:09:23

    hi nepumuk
    aus der tabelle "Leeres Muster"ZELLE"L3"!
    aber ginge auch mit inputbox beim start der userform ein button der startet .
    1-abfrage in inputbox welches monat?reischreiben OKT 03 und dann in "L3"kopieren
    2.abfrage gleich nach der 1. wieviel stunden soll denn gearbeited werden?
    zb. 8:00 dann ergebniss in zellen "R11:R41" rein!

    vielen dank
    karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 11:37:21

    Hallo Karli,
    startet die Mappe grundsätzlich mit der Userform und wird sie auch über die Userform gespeichert und geschlossen? Oder wann und wie wird die Form aufgerufen und geschlossen? Die Stunden kommen doch sicher in die Kopie von "Leeres Muster" gibt es da noch einen Minimal- bzw. Maximalwert? Du kannst die Leute doch nicht 30 Stunden arbeiten lassen, aber diese Eingabe wäre momentan noch möglich. Wie soll der Anwender dann eine eventuelle Fehleingabe korrigieren? Soll bei der Eingabe der Jahreszahl geprüft werden, ob diese nicht in der Vergangenheit liegt und wie viele Jahre kann sie in der Zukunft liegen? Sind die Tabellen geschützt? Wenn ja, mit Kennwort?
    Du siehst, da tauchen noch viele Fragen auf und ich habe noch gar nicht damit angefangen. Als, schreib mal alles auf, was das Programm alles machen soll, sonst kann ich es x-mal umschreiben und dazu habe ich keine Lust. Andere Frager haben auch noch ein Recht auf eine Antwort.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: karli
    Geschrieben am: 28.09.2003 12:10:49

    hi nepumuk
    das programm soll mit der userform starten!
    Über die userform wird nichts gespeichert.

    die stunden kommen in die kopie des leeren musters,
    und leider kann jemand auch länger arbeiten weil dienstreise ausland oder so.

    die fehler eingabe braucht nicht korrigiert zu werden ,dann muß der user halt das monat wieder löschen wenn was falsches eingibt.zb.oktaber03=ist egal
    jedoch die Zeit muß korrekt sein zb.8:00 weil dann die formel nicht rechnen.


    die tabellen müssen mit kennwort geschütz werden weil sonst die formeln rausgelöscht werden könnten.

    also im prinzip soll die userform1 starten mit je einem commandbutton
    einer zum erstellen einer kopie von Leeres Muster:
    dann sollte eine abfrage bezüglich monat und jahr kommen.zb:okt03.
    dann diesen wert als neuen namen für das neue tabellenblattverwenden.


    der 2button dien nur zum abrechen userform Unload me!

    und jetzt kann der user in der neuen tabelle okt03 seine arbeitszeiten eingeben.
    aber nur in feldern die ich ihm erlaube,und die ist mit passwort geschützt.

    danke für deine mühe
    karli


    Bild


    Betrifft: AW: Zu Teil 1 in tabelle schreiben
    von: Nepumuk
    Geschrieben am: 28.09.2003 17:01:29

    Hallo Karli,
    schau mal ob es so passt:

    https://www.herber.de/bbs/user/1198.xls

    In der Menüleiste findest du den Button "Tabellen", mit den du die Userform aufrufen kannst. Im Makro "Tabellenschutz" musst du dann natürlich dein Kennwort verwenden. Die Monatseingabe braucht nur Zahlen und als Jahreszahl lasse ich das laufende und das folgende Jahr zu.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: spitze nepumuk!!
    von: karli
    Geschrieben am: 28.09.2003 17:43:40

    HI SUPER DANKE
    nur kann ich meine tabelle mit den formeln nicht rüberkopieren
    weil ein blattschutz aktiv ist!
    was mache ich falsch!
    GRUSS
    KARLI


    Bild


    Betrifft: AW: spitze nepumuk!!
    von: Nepumuk
    Geschrieben am: 28.09.2003 18:04:11

    Hallo Karli,
    einfach den Blattschutz aufheben. Kennwort: "Dein Kennwort"
    natürlich ohne Anführungszeichen.
    Gruß
    Nepumuk


    Bild


    Betrifft: AW: spitze nepumuk!!
    von: karli
    Geschrieben am: 28.09.2003 18:27:58

    hi nepumuk
    ja danke jetzt klappt es endlich!

    vielen dank Danke
    karli


     Bild

    Excel-Beispiele zum Thema " InputBox"

    In eine InputBox eingegebene Daten in Elemente aufteilen download Laufwerk über InputBox auswählen download
    Einzelnes Zeichen aus einer InputBox-Eingabe auslesen download Über InputBoxes Zeile und Spalte auswählen und Ergebnis nennen download
    Mit InputBoxes Zeilennummern abfragen und Summe bilden download Suchbegriff über InputBox abfragen und Fundzeile löschen download
    Druckstart- und endzeilen über InputBox abfragen download Msg- und InputBoxes kombinieren und nach Ergebnis verzweigen download
    Über InputBox festzulegenden Bereich kopieren download Numerische InputBox-Werte fortlaufend in eine Spalte eintragen download
    Artikelnummer über InputBox suchen und eintragen download Über interaktive InputBox Bereich auswählen und zurückgeben download
    InputBox-Eingabe auf gültige Zahl prüfen download Zeit über InputBox abfragen, dividieren und zurückgeben download
    Zahleneingaben in InputBox erzwingen download Über InputBox zu ermittelnde Spaltenanzahl einfügen download
    Inputbox wahlweise zur Zahlen- oder Zeichenfolgeeingabe download Beispiele zum Einsatz der InputBox download