Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
540to544
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
540to544
540to544
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zeilenwert speichern

Zeilenwert speichern
07.01.2005 02:57:12
Der
Servus,
Folgendes Problem:
Ich lasse in Spalte C einen Wert suchen, der nach Finden geloescht werden soll. Hierzu denke ich, dass ich eine Variable benoetige, die mir die Zeile speichert in der der gesuchte Wert steht, um anschliessend ueber
ActiveSheet.Cells(VARIABLE, 1).Select
Selection.Delete Shift:=xlUp
zu loeschen.
Bisher sieht mein Code wie folgt aus.

Private Sub cmdDelete_Click()
If MsgBox("Delete Entry?", vbYesNo + vbQuestion) = vbYes Then
Dim Found As Range
Dim LoLetzte As Long
Dim sSearch As String
sSearch = Me.cboSerial.Value
If sSearch = "" Then Exit Sub
LoLetzte = 65536
If Range("C65536") = "" Then LoLetzte = Range("C65536").End(xlUp).Row
Set Found = Range("C1:C" & LoLetzte).Find(sSearch, Range("C" & LoLetzte), , xlPart, , xlNext)
If Found Is Nothing Then
MsgBox ""
Else
ActiveSheet.Unprotect
Worksheets("Delivery").Activate
ActiveSheet.Cells(Found, 1).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Cells(Found, 2).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Cells(Found, 3).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Cells(Found, 4).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If
End Sub

Mit Found als Variable wird allerdings nicht die Zeile in der Suchwert steht geloescht, sondern die Zeile mit dem Wert des Suchwertes. Heisst: ich suche nach 5, wird 5 in Zeile 6 gefunden, wird nicht Zeile 6 sondern Zeile 5 geloescht.
Dankbar fuer jeden Denkanstoss.
Gruesse,
Armin

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenwert speichern
07.01.2005 03:27:05
Matthias
Hallo Armin,
- Du löschst ja scheinbar nicht den gefundenen Wert, sondern die gleiche Zelle im Blatt "Delivery". Oder wozu der Befehl Worksheets("Delivery").Activate ?
- Du suchst auch Teilwerte, also wenn dein Suchbgriff 4 ist, findet er auch 40, 41, 124, ... naja vielleicht willst du das so...
- Der Löschbefehl lautet:
Range(Cells(Found.Row, 1), Cells(Found.Row, 4)).Delete Shift:=xlUp
(auf das Select kannst du verzichten!)
Alles in allem der geänderte Code:
Private Sub cmdDelete_Click()
If MsgBox("Delete Entry?", vbYesNo + vbQuestion) = vbYes Then
Dim Found As Range
Dim LoLetzte As Long
Dim sSearch As String
sSearch = Me.cboSerial.Value
If sSearch = "" Then Exit Sub
LoLetzte = 65536
If Range("C65536") = "" Then LoLetzte = Range("C65536").End(xlUp).Row
Set Found = Range("C1:C" & LoLetzte).Find(sSearch, Range("C" & LoLetzte), , xlPart, , xlNext)
If Found Is Nothing Then
MsgBox ""
Else
ActiveSheet.Unprotect
'Worksheets("Delivery").Activate 'ist das nötig?
Range(Cells(Found.Row, 1), Cells(Found.Row, 4)).Delete Shift:=xlUp
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End If
End Sub
Viel Erfolg noch,
Matthias
Anzeige
AW: Zeilenwert speichern
07.01.2005 05:11:08
Der
Hallo Matthias,
besten Dank zu in Deutschland nachtschlafender Zeit. Das Ganze funktioniert nun, so wie ich es wollte. Ob sheet activate notwendig ist, mal testen. Userform ist nicht zwangslaeufig mit dem richtigen sheet geoeffnet.
Gruesse aus Shanghai,
Armin
AW: Zeilenwert speichern
07.01.2005 10:45:44
Matthias
Hallo Armin,
Userform ist nicht zwangslaeufig mit dem richtigen sheet geoeffnet
dann müsstest du dich aber schon bei der Suche auf das "richtige" Blatt beziehen:
Private Sub cmdDelete_Click()
If MsgBox("Delete Entry?", vbYesNo + vbQuestion) = vbYes Then
Dim Found As Range
Dim LoLetzte As Long
Dim sSearch As String
sSearch = Me.cboSerial.Value
If sSearch = "" Then Exit Sub
With Sheets("Delivery")
LoLetzte = 65536
If .Range("C65536") = "" Then LoLetzte = .Range("C65536").End(xlUp).Row
Set Found = .Range("C1:C" & LoLetzte).Find(sSearch, .Range("C" & LoLetzte), , xlPart, , xlNext)
If Found Is Nothing Then
MsgBox ""
Else
.Unprotect
.Range(.Cells(Found.Row, 1), .Cells(Found.Row, 4)).Delete Shift:=xlUp
.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End If
End With
End If
End Sub
Gruß,
Matthias
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige