Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
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
Inhaltsverzeichnis

Zeile markieren

Zeile markieren
18.05.2009 17:31:30
Frank
Hallo Zusammen!!!
Ich wünsche noch einen guten Start in die Woche und nun zu meiner Frage:
Mittels nachfolgendem Code lasse ich Datensätze ändern. Dieser wird zuvor gesucht und mittels Click in ein Listenfeld ausgewählt, dann verändert und per Click auf ein Button wird der Code ausgelöst und der Datensatz geändert und nun möchte ich, dass nach der Änderung die Zeile markiert ist in der der Datensatz steht welcher geändert wurde.
Nun der Code:

Private Sub CommandButton6_Click()
'Datensatz ändern
Application.ScreenUpdating = False
Dim lng As Long
Dim Treffer As Range
Dim i As Integer
On Error Resume Next
lng = frmDaten.ListBox1.Column(8)
Sheets("DATEN").Activate
If Me.TextBox4.Value = "" Then
Me.TextBox4.Value = TextBox7.Value
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 = 6 Then
lng = Treffer.Row
Else
Exit Sub
End If
End If
With frmDaten
Cells(lng, 1).Value = .TextBox1.Value * 1
Cells(lng, 2).Value = CDate(TextBox2.Text)
Cells(lng, 3).Value = .TextBox3.Value
Cells(lng, 4).Value = .TextBox4.Value
Cells(lng, 5).Value = .TextBox5.Value * 1
Cells(lng, 6).Value = .TextBox6.Value * 1
'Listbox aktualisieren
i = .ListBox1.ListIndex
.ListBox1.Column(0, i) = .TextBox1.Value
.ListBox1.Column(1, i) = .TextBox2.Value
.ListBox1.Column(2, i) = .TextBox3.Value
.ListBox1.Column(3, i) = .TextBox4.Value
.ListBox1.Column(4, i) = .TextBox5.Value
.ListBox1.Column(5, i) = .TextBox6.Value
End With
Application.ScreenUpdating = True
End Sub


Ich hoffe ihr konntet mein anliegen verstehen und mir helfen, was ich in meinen Code einfügen muss?
Danke!!!
Mit frdl. Gruß Frank H.

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Rows(lng).select owT
18.05.2009 17:55:17
Rudi
AW: Rows(lng).select owT
18.05.2009 18:12:11
Frank
Hallo Rudi!!!
Danke!!! Funzt!!!
Aber mit der Markierung der Zeile wird dann eine UF geöffnet.
Mittels folgendem Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim RaBereich As Range
Set RaBereich = Range("I:I, K:K")
If Not Intersect(Range(Target.Address), RaBereich) Is Nothing Then frmCalendar0.Show
Set RaBereich = Nothing
End Sub


Kann ich diesen Code eventuell im zuvor geposteten Code verhindern!!!
Wenn ja, wie?
Danke!!!

Select ohne Ereignis
18.05.2009 18:25:31
Erich
Hi Frank,
hier mal eine neue Version deines Codes - das mit dem Select ist eingebaut:

Option Explicit
Private Sub CommandButton6_Click()                 ' Datensatz ändern
Dim lngZ As Long
Dim rngF As Range
Dim ii As Integer
'   Application.ScreenUpdating = False   ' nach dem Test aktivieren
lngZ = ListBox1.Column(8)
If TextBox4.Value = "" Then TextBox4.Value = TextBox7.Value
With Sheets("DATEN")
Set rngF = .Columns(1).Find(What:=TextBox1.Value, _
LookAt:=xlWhole)
If rngF Is Nothing Then
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Row
Else
ii = MsgBox("Dieser Satz wurde bereits erfasst! Überschreiben?", _
vbYesNo + vbQuestion)
If ii = 6 Then lngZ = rngF.Row Else Exit Sub
End If
.Cells(lngZ, 1).Value = TextBox1.Value * 1
.Cells(lngZ, 2).Value = CDate(TextBox2.Value)
.Cells(lngZ, 3).Value = TextBox3.Value
.Cells(lngZ, 4).Value = TextBox4.Value
.Cells(lngZ, 5).Value = TextBox5.Value * 1
.Cells(lngZ, 6).Value = TextBox6.Value * 1
ii = ListBox1.ListIndex                      ' Listbox aktualisieren
ListBox1.Column(0, ii) = TextBox1.Value
ListBox1.Column(1, ii) = TextBox2.Value
ListBox1.Column(2, ii) = TextBox3.Value
ListBox1.Column(3, ii) = TextBox4.Value
ListBox1.Column(4, ii) = TextBox5.Value
ListBox1.Column(5, ii) = TextBox6.Value
Application.EnableEvents = False             ' Zeile auswählen
.Activate
.Rows(lngZ).Select
Application.EnableEvents = True
End With
Application.ScreenUpdating = True
End Sub

Gelöscht habe ich die furchtbare Zeile "On Error Resume Next".
Sie führt nur dazu, dass du danach nichts von einem Fehler mitbekommst.
Da können die dümmsten Sachen passieren...
Und noch ein Vorschlag für ein kürzeres Worksheet_SelectionChange:


Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("I:I, K:K")) Is Nothing Then frmCalendar0.Show
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Select ohne Ereignis
18.05.2009 19:43:01
Frank
Hallo Erich!!!
Funzt alles bestens und ich habe wieder etwas dazu gelernt!
Danke und herzliche Grüße von Frank H. aus der Hauptstadt!!!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige