polaroid
Vice Admiral
- Registriert
- Nov. 2007
- Beiträge
- 6.785
Hallo zusammen.
Ich bin dabei eine UserForm zu basteln. Hier geht es darum eine zweispaltige Exceltabelle über diese UserForm zu befüllen, zu bearbeiten und Daten daraus zu löschen, sprich den Namen und dessen E-Mail Adresse zu bearbeiten. Das Ganze soll wie gesagt über eine UserForm geschehen, die im Anhang zu sehen ist. Leider bin ich in der VBA Programmierung nicht so bewandert, als dass ich jetzt wüsste, warum mein Projekt nur so halb funktioniert, weswegen ich auf eure Hilfe angewiesen bin!
Der Code der UserForm sieht bisher folgendermaßen aus:
Und das entsprechende Modul dazu:
Vielen vielen Dank für eure Hilfe!
Beste Grüße, Christian
Ich bin dabei eine UserForm zu basteln. Hier geht es darum eine zweispaltige Exceltabelle über diese UserForm zu befüllen, zu bearbeiten und Daten daraus zu löschen, sprich den Namen und dessen E-Mail Adresse zu bearbeiten. Das Ganze soll wie gesagt über eine UserForm geschehen, die im Anhang zu sehen ist. Leider bin ich in der VBA Programmierung nicht so bewandert, als dass ich jetzt wüsste, warum mein Projekt nur so halb funktioniert, weswegen ich auf eure Hilfe angewiesen bin!
Der Code der UserForm sieht bisher folgendermaßen aus:
Code:
Option Explicit
Private Sub cmdAbbrechen_Click()
Unload Me
End Sub
Private Sub cmdÄndernVB_Click()
'Datensatz ändern
Dim lng As Long
Dim i As Integer
On Error Resume Next
'ListBox.ColumnCount
lng = UserForm2.ListBox1.Column(2)
Sheets("VB").Activate
With UserForm2
Cells(2, 1).Value = .UserForm2.TextBox1.Value
Cells(2, 2).Value = .UserForm2.TextBox2.Value '& "@lalala.de"
'Listbox aktualisieren
i = .ListBox1.ListIndex
.ListBox1.Column(0, i) = .TextBox1.Value
.ListBox1.Column(1, i) = .TextBox2.Value
End With
End Sub
Private Sub cmdLöschen_Click()
'Datensatz löschen
Dim lng As Long
On Error Resume Next
Sheets("VB").Activate
lng = UserForm2.ListBox1.Column(1)
Sheets("VB").Rows(lng).Delete
FelderLöschenVB
End Sub
Private Sub cmdSuchen_Click()
'Suche im Datenstamm
SuchVB
End Sub
Private Sub cmdTextfelderLeeren_Click()
FelderLöschen
End Sub
Private Sub CommandButton1_Click()
SucheName
End Sub
Private Sub ListBox1_Click()
Dim lng As Integer
Sheets("VB").Activate
lng = UserForm2.ListBox1.Column(2)
With UserForm2
TextBox1.Value = Cells(lng, 1).Value
TextBox2.Value = Cells(lng, 2).Value
End With
End Sub
Private Sub UserForm2_Initialize()
Dim UserForm2 As Worksheet
Dim i As Integer
Set tblDaten = Worksheets("Erfassung")
'Titel der UserForm
UserForm2.Caption = Sheets("VB").Cells(1, 1).Value & (" Eingabemaske")
End With
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then
MsgBox "Schließen Sie die Userform über die Schaltfläche Abbrechen!", _
vbInformation
Cancel = True
End If
End Sub
Private Sub cmdNeu_Click()
'Datensatz anlegen
Dim Dia2 As UserForm2
Dim lng As Long
Dim Treffer As Range
Dim i As Integer
If Me.TextBox1.Value = "" Then
MsgBox "Sie müssen einen " & Me.Label1.Caption & " angeben!"
Exit Sub
End If
Set Treffer = DATEN.Columns(1).Find(what:=Me.TextBox1.Value, lookat:=xlWhole)
If Treffer Is Nothing Then
lng = Range("A65536").End(xlUp).Offset(1, 0).Row
Else
i = MsgBox("Dieser Satz wurde bereits erfasst! Überschreiben?", vbYesNo + vbQuestion)
If i = 2 Then
lng = Treffer.Row
Else
Exit Sub
End If
End If
End Sub
Private Sub UserForm_Activate()
ListBox1.ColumnCount = 2
Label1.Caption = _
ThisWorkbook.Sheets(2).Range("A1").Text
Label2.Caption = _
ThisWorkbook.Sheets(2).Range("B1").Text
UserForm2.Label11.Caption = UserForm2.Label1.Caption
UserForm2.Label12.Caption = UserForm2.Label2.Caption
'Titel der UserForm
UserForm2.Caption = "VB Erfassung"
End Sub
Und das entsprechende Modul dazu:
Code:
Sub Dia2()
UserForm2.Show
End Sub
Sub FelderLöschenVB()
Dim tb As Object
With UserForm2
.ListBox1.Clear
For Each tb In .Controls
If TypeName(tb) = "TextBox" Then tb.Text = ""
Next tb
End With
End Sub
Sub SuchVB()
Dim lng As Long
Dim i As Integer
Application.ScreenUpdating = False
With UserForm2
.ListBox1.Clear
Sheets("VB").Activate
i = 0
For lng = 2 To ActiveSheet.UsedRange.Rows.Count
If InStr(LCase(Cells(lng, 1).Value), LCase(.TextBox1.Value)) > 0 Then
.ListBox1.AddItem Cells(lng, 1).Value
.ListBox1.Column(1, i) = Cells(lng, 2).Value
.ListBox1.Column(2, i) = Cells(lng, 3).Row
Else
'
'End With
End If
Next lng
End With
Application.ScreenUpdating = True
End Sub
Vielen vielen Dank für eure Hilfe!
Beste Grüße, Christian