Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Inhalte einfügen

Inhalte einfügen
28.04.2008 21:35:00
Stefan
Hallo Excelaier,
nun benötige seid langer Zeit mal wieder Hilfe.
Mein Code Sieht folgendermassen aus:
Option Explicit

Private Sub cbbName_Exit(ByVal Cancel As MSForms.ReturnBoolean)
On Error GoTo ErrHandler
'brutale Prüfung, ob für den Namen ein Blatt existiert
'wenn nicht gehts mit dem Errorhandler weiter
Worksheets(cbbName.Value).Select
Exit Sub
ErrHandler:
'txbFehler wird eingeblendet und legt sich über die
'weiteren Eingabefelder
txbFehler.Visible = True
End Sub



Private Sub cmbAbbruch_Click()
Unload Me
End Sub



Private Sub cmbOkay_Click()
'Variable um Daten in Zielblatt und Gedsamtübersicht
'in die erste freie Zeile schreiben zu können
Dim lgLetzte As Long
'Prüfung, ob die Fehlerbox sichtbar ist
'falls ja das Blatt einfügen
If txbFehler.Visible = True Then
Worksheets.Add After:=Worksheets(Worksheets.Count)
With ActiveSheet
.Name = cbbName
'die Titelzeile generieren
.Cells(1, 1) = "Datum"
.Cells(1, 2) = "Name"
.Cells(1, 3) = "Ort"
.Cells(1, 4) = "Bemerkung"
.Cells(1, 5) = "Zahl1"
.Cells(1, 6) = "Zahl2"
.Cells(1, 8) = "TextBox3"
'Titelzeile FETT
.Rows("1:1").Font.Bold = True
'Spalte A als Datum
'.Columns("A:A").NumberFormat = "mm/dd/yyyy"
End With
'und die Fehlerbox verschwinden lassen
txbFehler.Visible = False
Else
'Fehlerbox ist nicht eingeblendet also alles speichern
'erst in der Namenstabelle
With Worksheets(cbbName.Value)
lgLetzte = .Range("A65536").End(xlUp).Row + 1
.Cells(lgLetzte, 1) = CDate(DTPicker)
.Cells(lgLetzte, 2) = cbbName.Value
.Cells(lgLetzte, 3) = txbOrt
.Cells(lgLetzte, 4) = txbBemerk
.Cells(lgLetzte, 5) = CInt(txbZahl)
.Cells(lgLetzte, 6) = CInt(txbZahl)
.Cells(lgLetzte, 8) = TextBox3
End With
'und dann in der Gesamtüberblick
With Worksheets("Gesamtüberblick")
lgLetzte = .Range("A65536").End(xlUp).Row + 1
.Cells(lgLetzte, 1) = CDate(DTPicker)
.Cells(lgLetzte, 2) = cbbName.Value
.Cells(lgLetzte, 3) = txbOrt
.Cells(lgLetzte, 4) = txbBemerk
'falls mit den Zahlen gerechnet werden muss
'ist eine Umwandlung CInt beispielsweise nötig
'hier müsste dann noch eine Fehlerüberprüfung
'für den Fall rein, dass keine Zahl eingegeben wird
.Cells(lgLetzte, 5) = CInt(txbZahl)
.Cells(lgLetzte, 6) = CInt(txbZahl)
.Cells(lgLetzte, 8) = TextBox3
'einfacher ist es, wenn nicht gerechnet werden soll
'dann gehts mit
'.Cells(lgLetzte, 5) = txbZahl
End With
'damit man sich in den Blättern nicht verirrt und
'da wieder rauskommt, wo man angefangen hat
Worksheets("Gesamtüberblick").Activate
'fertig
Unload Me
End If
End Sub



Private Sub txbOrta_Change()
End Sub



Private Sub TextBox3_Change()
End Sub



Private Sub txbFehler_Change()
End Sub



Private Sub txbOrt_Change()
End Sub



Private Sub UserForm_Initialize()
'für die Combobox ermitteln, welche Blätter vorhanden sind
Dim iCount As Integer
For iCount = 1 To Worksheets.Count
If Worksheets(iCount).Name  "Gesamtüberblick" Then
cbbName.AddItem (Worksheets(iCount).Name)
End If
Next
'Fehlerbox ausblenden
txbFehler.Visible = False
End Sub


haut soweit auch alle sganz prima hin.
Nun mein Wunsch um Hilfe.
Nach Eingabe in die UserForm werden die daten aus der TextBox3 in die nächste freie Zeile der Spalte H geschrieben. Ich möchte nun aber das die Daten aus der Textbox3 unter die Daten der Textbos CbbName geschrieben werden.
Wird dann ein weiterer Datensatz eingegeben muss die automatische Eintragung 2 Spalten weiter beginnen.
Wie muss ich den Code umändern
Lieben Gruss
Stefan

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Inhalte einfügen
29.04.2008 07:02:00
Erich
Hallo Stefan,
wenn ich das jetzt richtig verstehe, sollen der Wert der TextBox3 in
.Cells(lgLetzte + 1, 2) geschrieben werden,
also in Spalte B, eine Zeile unter dem Eintrag
.Cells(lgLetzte, 2) = cbbName.Value
Damit beim nächsten Klick auf cmbOkay der Wert in Spalte B nicht überschrieben wird, musst du statt
lgLetzte = .Range("A65536").End(xlUp).Row + 1
die neue Zeile von Spalte B abhängig machen, also:
lgLetzte = .Range("B65536").End(xlUp).Row + 1
Besser wäre, die frühere max. Zeilenzahl nicht explizit hinzuschreiben, sondern Rows.Count zu nutzen
(Excel 2007 hat mehr als 65536 Zeilen), also:
lgLetzte = .cells(.rows.count, 2).End(xlUp).Row + 1
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Inhalte einfügen
29.04.2008 16:07:00
Stefan
Danke, werd ees gleich ausprobieren.
Lieben Gruss
Stefan

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige