PDA

Vollständige Version anzeigen : Einträge zu Listbox hinzufügen


Ligafan
29.06.2015, 14:51
Hallo Freunde,

ich probiere jetzt schon ganzen Tag und komme nicht weiter.

Ich habe eine Userform, in der eine Listbox ist. In der Listbox werden verschiedene Werte angezeigt. Ich möchte zu den Werten Zeiten hinzufügen.

Ich habe folgenden Code:

Sub starten_Click()
Sheets("Linie_Grün").Rows(klick + 1).Columns("F") = Now
Dim sTxt As String
sTxt = InputBox("Bitte die geschätzte Dauer eingeben")
If sTxt = "" Then Exit Sub

Sheets("Linie_Grün").Rows(klick + 1).Columns("g").Value = sTxt
Sheets("gesamt").Rows(klick + 1).Columns("g").Value = sTxt
End Sub

Mit diesem Code gebe ich in der Inputbox eine Zeit ein, die mir im Worksheet "Linie_Grün" diese Zeit speichert. Und zwar in dieser Zeile, die ich in der Vorhandenen Listbox angeklickt habe. Nur wird diese Zeit nicht in der gewünschten Zeile gespeichert sondern immer in Zeile 1.

Kann mir da wer helfen?

lG

EarlFred
29.06.2015, 15:04
Hallo lG,

wie ist klick deklariert?
Vermutlich wurde dieser Variable noch kein Wert zugewiesen, so dass er als 0 interpretiert wird.

Grüße
EarlFred

Ligafan
30.06.2015, 06:35
Ich stell mal das File rein. Schaut euch das bitte mal an.

Vielen Dank im Voraus

Ligafan
30.06.2015, 06:51
So, jetzt hab ich den Fehler entdeckt.

Beverly
30.06.2015, 06:58
Hi,

benutze den ListIndex um die Zeile zu ermitteln. Und benutze zur Abfrage eine Application.InputBox, dann kannst du vorgeben dass nur Zahlen eingegeben werden können.:

Dim lTxt As Long
Dim klick As Long
klick = Info1.ListIndex
lTxt = Application.InputBox(prompt:="Bitte die geschätzte Dauer eingeben", Type:=1)
If CStr(lTxt) = "" Then Exit Sub
Sheets("Linie_Grün").Rows(klick + 1).Columns("F") = Now
Sheets("Linie_Grün").Rows(klick + 1).Columns("g").Value = lTxt
Sheets("gesamt").Rows(klick + 2).Columns("g").Value = lTxt


Deine beiden Tabellen sind unterschiedlich aufgebaut, deshalb für "gesamt" + 2 und für "Linie_Grün" + 1.



<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
30.06.2015, 07:44
Super, Danke.

Eine andere Frage habe ich jetzt noch zu dem Thema.

Ich möchte das Datumsformat individuell einstellen. Habe diesen Code:

Sheets("Linie_Grün").Rows(klick + 1).Columns("F") = Now

Was muss ich ändern?


lG

EarlFred
30.06.2015, 07:54
Hallo lG,

With Worksheets("Linie_Grün").Cells(klick + 1, "F")
.Value = Now
.NumberFormat = "DD.MM.YYYY hh:mm:ss"
End With

Grüße
EarlFred

Beverly
30.06.2015, 08:00
Hi,

z.B. so:

With Sheets("Linie_Grün")
.Rows(klick + 1).Columns("F") = Now
.Rows(klick + 1).Columns("F").NumberFormat = "hh:mm:ss"
.Rows(klick + 1).Columns("g").Value = lTxt
End With


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
30.06.2015, 11:35
Beide ändern nur die Einträge in der Tabelle, aber nicht in der Listbox

EarlFred
30.06.2015, 12:44
Hallo nameloser,

Beide ändern nur die Einträge in der Tabelle, aber nicht in der Listbox
logisch. Das liegt daran, dass Du danach garnicht gefragt hast.

Vielleicht solltest Du Dir überlegen, was Du wissen willst, bevor Du eine Frage stellst?

Nutze Format.

Grüße
EarlFred

Ligafan
30.06.2015, 13:11
Sorry, das ich das vergessen habe. Du könntest mich aber auch etwas freundlicher darauf hinweisen

EarlFred
30.06.2015, 13:17
Hallo ,

Du könntest mich aber auch etwas freundlicher darauf hinweisen
könnte ich. Und würdest Du nicht meckern, würde ich das sogar tun.

Grüße an den grußlosen von
EarlFred

Ligafan
30.06.2015, 13:46
Das war kein meckern. Ich habs ja nur gesagt.

Beverly
30.06.2015, 15:05
Weise der ListBox den Zellbereich neu zu.

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
01.07.2015, 07:28
Hi,

es funktionier in dem File, das du angehängt hast. Aber ich weiß nicht, wie ich das mache, den Zellbereich neu zuordnen.

lG
Rainer

Beverly
01.07.2015, 08:16
Hi Rainer,

was meinst du mit "Zellbereich neu ordnen"?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
01.07.2015, 09:39
Hi,

du hast geschrieben, weise den Zellbereich der Listbox neu zu. Was meinst du damit?
lG

Beverly
01.07.2015, 10:06
Hi,

hast du dir die Codes angeschaut?

Im Modul "Linie_grün":

Sub userform2_initialize()
With UserForm2.Info1
.RowSource = "Linie_Grün!A1:I10000"
.ColumnHeads = True
End With
End Sub



Im UserForm:

Sub starten_Click()
Dim lTxt As Long
Dim klick As Long
klick = Info1.ListIndex
lTxt = Application.InputBox(prompt:="Bitte die geschätzte Dauer eingeben", Type:=1)
If CStr(lTxt) = "" Then Exit Sub
If Info1.ListIndex > 0 Then
With Sheets("Linie_Grün")
.Rows(klick + 1).Columns("F") = Now
.Rows(klick + 1).Columns("F").NumberFormat = "hh:mm:ss"
.Rows(klick + 1).Columns("g").Value = lTxt
End With
userform2_initialize
End If
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
01.07.2015, 11:04
Vielen vielen Dank,
es funktioniert.

ich sitz schon einige zeit davor uns sehe vor lauter Codes nichts mehr.

lG
Rainer

Beverly
01.07.2015, 11:49
Hi Rainer,

ich würde dir aber empfehlen, nicht den gesamten Bereich bis Zeile 10000 in die ListBox einzulesen, wenn nicht alle Zeilen gefüllt sind. Ermittle stattdessen die letzte belegte Zeile (in Spalte A) und weise diesen Bereich zu:

Sub userform2_initialize()
Dim lngLetzte As Long
With Worksheets("Linie_Grün")
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count)
End With
With UserForm2.Info1
.RowSource = "Linie_Grün!A1:I" & lngLetzte
.ColumnHeads = True
End With
End Sub



<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
06.07.2015, 12:03
Super Beverly, vielen Dank.

Ich hab jetzt alles soweit fertig. Nur eine Frage habe ich jetzt noch.

Ich habe diesen Code:

Sub starten_Click()
klick = UserForm2.Info1.ListIndex

test1:
' Datum wird automatisch eingegeben und in weitere Folge die ca. Dauer Eingabeaufforderung
Sheets("Linie_Grün").Rows(klick + 1).Columns("o") = Now

userform2_initialize
Dim sTxt As String

sTxt = InputBox("Bitte die geschätzte Dauer eingeben")
If sTxt = "" Then GoTo test1

Sheets("Linie_Grün").Rows(klick + 1).Columns("p").Value = sTxt + Now


kann ich da was einbauen, das, wenn in der Listbox nichts angeklickt ist, keine Fehlermeldung mehr kommt, sondern einfach nichts passiert?

Danke,

lG
Rainer

Beverly
06.07.2015, 13:59
Hi Rainer,

meinst du in dieser Zeile:

klick = UserForm2.Info1.ListIndex


Einfach mal so versuchen (ungetestet):

If UserForm2.Info1.ListIndex <> -1 Then klick = UserForm2.Info1.ListIndex

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

Ligafan
06.07.2015, 14:36
Vielen Dank,

hab den Code etwas abgeändert:

If Not UserForm2.Info1.ListIndex <> -1 Then Exit Sub
If UserForm2.Info1.ListIndex <> -1 Then klick = UserForm2.Info1.ListIndex

so funktionierts.

lG
Rainer