Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1552to1556
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

Row counter für Selection

Row counter für Selection
20.04.2017 17:09:33
Max2
Hallo Leute,
ich habe einen Code der Prüft ob der Nutzer einen Datensatz per "Entf" Taste auf dem Sheet Löscht oder per Button auf UserForm.
Nun möchte ich feststellen, ob der Nutzer mehrere Datensätze Selektiert hat oder nur einen.
Bei einem wird ein Sub aufgerufen der nur einen Datensatz entfernt.
Bei mehreren, so der Plan, wird ein Sub Aufgerufen der mehrere nacheinander Löschen soll.
Jetzt habe ich aber das Problem das ich mir folgende Funktion, jede Zelle in der Selection zählt, ich möchte aber immer nur die erste Zelle addieren, damit sich der Wert eben nicht verfälscht.
Hier Code ausschnitt 1:
(Das Problem ist: Function amount_of_Selection_in_Sheet())

Sub Main_Datensatz_Loeschen()
Dim warning As Byte
'Main Prozedur des Moduls "Datensatz_Loeschen"
On Error Resume Next
warning = MsgBox("Möchten Sie den Datensatz wirklich Löschen?", vbYesNo, "ACHTUNG!")
Select Case warning
Case 6
Call got_Called_by_Whom   'calledBy ist global und ist entweder 1 oder 0
MsgBox "Der Datensatz wurde gelöscht."
Case 7
End Select
End Sub
Function got_Called_by_Whom()
'Wir prüfen ob das Löschen durch den "Entf" Key auf der
'Tastatur erfolgt oder durch den Löschen Button der UserForm
If calledBy = 0 Then
Call amount_of_Selection_in_Sheet
Else
Call delete_Datensatz_execute_from_Userform(UserForm3.ComboBox1.Value)
End If
End Function
Function amount_of_Selection_in_Sheet()
Dim counter As Integer
Dim c As Object
    For Each c In Selection
counter = counter + 1
Next c
If counter = 1 Then Call delete_Datensatz_execute_from_Sheet
If counter > 1 Then Call delete_Datensatz_selection_execute_from_Sheet
End Function
Ich würde jetzt einfach nochmal abfragen in der Schleife:
If c.Column = 1 Then counter = counter + 1
Aber ich glaube das ist relative Fehleranfällig... schließlich
kann der Nutzer ja auch in einer anderen Spalte die Selection begonnen haben.
Habt ihr da eine Bessere Idee..?
Hier Code ausschnitt 2 (Löschen der Selection):

Sub delete_Datensatz_selection_execute_from_Sheet()
Dim curDataSet() As String
Dim deleteNumberFromTable As String
Dim c
Dim i As Long
'Löscht alle Datensätze einer Selection im Sheet
i = 0
Set ws = ThisWorkbook.Sheets(1)
With ws
For Each c In Selection
ReDim Preserve curDataSet(i)
curDataSet(i) = .Cells(c.Row, 1)
i = i + 1
c.EntireRow.Delete
Next c
End With
Set ws = ThisWorkbook.Sheets("IDs")
Do
deleteNumberFromTable = Finde_Datensatz_Zeile(curDataSet(i), 2)
With ws
.Cells(deleteNumberFromTable, 1).EntireRow.Delete
End With
i = i + 1
Loop Until i > UBound(curDataSet)
Set ws = Nothing
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Row counter für Selection
20.04.2017 17:14:58
ChrisL
Hi Max
Vielleicht verstehe ich dich auch falsch, aber suchst du vielleicht:
Selection.Rows.Count
cu
Chris
Super Danke!
20.04.2017 21:54:52
Max2
Hallo,
danke für deine Antwort!
Könnte mir gerade in den Arsch beißen...
AW: Row counter für Selection
20.04.2017 21:45:48
Uduuh
Hallo,
du solltest auch berücksichtigen, dass die Selection unzusammenhängend ist.
Prinzip:
Sub aaa()
Dim s As Range, a As Range, r As Range
Set s = Selection
For Each a In s.Areas
For Each r In a.Rows
r.Delete
Next r
Next a
End Sub
Gruß aus’m Pott
Udo

Danke, daran hatte ich gar nicht mehr gedacht!
20.04.2017 21:57:15
Max2
Hallo,
danke für die Antwort und den Code.
An dass hatte ich gar nicht mehr gedacht!
Damit hast du mir ein gutes Stück Error Handling abgenommen, Dankeschön.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige