Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

InputBox

InputBox
28.09.2003 06:50:03
karli
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

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zu Teil 1 in tabelle schreiben
28.09.2003 07:51:54
andreas e
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
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 08:19:05
karli
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 08:27:58
Nepumuk
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 08:40:05
karli
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
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 08:47:07
Nepumuk
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 08:59:40
karli
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 09:08:36
Nepumuk
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
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 09:18:28
karli
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 09:54:56
Nepumuk
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 10:36:27
karli
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 10:44:56
Nepumuk
Hallo Karli,
und aus welcher Tabelle soll der Name geholt werden?
Gruß
Nepumuk
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 11:09:23
karli
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
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 11:37:21
Nepumuk
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 12:10:49
karli
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
Anzeige
AW: Zu Teil 1 in tabelle schreiben
28.09.2003 17:01:29
Nepumuk
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
AW: spitze nepumuk!!
28.09.2003 17:43:40
karli
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
AW: spitze nepumuk!!
28.09.2003 18:04:11
Nepumuk
Hallo Karli,
einfach den Blattschutz aufheben. Kennwort: "Dein Kennwort"
natürlich ohne Anführungszeichen.
Gruß
Nepumuk
AW: spitze nepumuk!!
28.09.2003 18:27:58
karli
hi nepumuk
ja danke jetzt klappt es endlich!

vielen dank Danke
karli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige