Supportnet / Forum / Tabellenkalkulation
zeilen löschen mit variablen werten
Frage
Hab ein makro geschrieben worin zeilen gelöscht werden.
hier ist ein ausschnitt:
Dim i As Integer
Range("F7").Select
Do Until ActiveCell.Value = ""
ActiveSheet.Shapes("TextBox1_Change").Select
löscheLoop = Selection.Characters.Text
If ActiveCell.Value <> "5401" And ActiveCell.Value <> "5402" And ActiveCell.Value <> "5403" And ActiveCell.Value <> "5404" And ActiveCell.Value <> "5405" And ActiveCell.Value <> "5406" And ActiveCell.Value <> "5407" And ActiveCell.Value <> "5409" And ActiveCell.Value <> "5451" And ActiveCell.Value <> "5452" And ActiveCell.Value <> "5453" And ActiveCell.Value <> "5454" And ActiveCell.Value <> "5455" And ActiveCell.Value <> "5456" And ActiveCell.Value <> "5457" And ActiveCell.Value <> "5458" And ActiveCell.Value <> "5459" And ActiveCell.Value <> "5491" And ActiveCell.Value <> "5492" And ActiveCell.Value <> "5493" And ActiveCell.Value <> "5494" And ActiveCell.Value <> "5495" And ActiveCell.Value <> "591" Then
ActiveCell.EntireRow.Delete
i = i + 1
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
diese If`ActiveCell.Value <>.... möchte ich gerne variabel machen z.B über textbox oder einem zweiten tabellenblatt, wo man die gewünschten zahlen eingeben kann!
kann mir da bitte jemand weiterhelfen?
danke
Antwort 1 von benötigthilfe
kann keiner helfen????
ist sehr wichtig.
die zahlen bei if sollen z.B. über textbox eingegeben werden können oder aus einer anderen seite gefiltert werden!
bitte helft mir
danke
ist sehr wichtig.
die zahlen bei if sollen z.B. über textbox eingegeben werden können oder aus einer anderen seite gefiltert werden!
bitte helft mir
danke
Antwort 2 von piano
Hallo
Hier die Hilfe: Namen musst Du noch ändern und die Vergleichswerte stehen in Tabelle2 Spalte "A" ab Zeile 1.
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Hier die Hilfe: Namen musst Du noch ändern und die Vergleichswerte stehen in Tabelle2 Spalte "A" ab Zeile 1.
Sub test()
Dim Sheet1, Sheet2, z
Dim Wert, LöschenOK As Boolean
Dim i As Integer, i1 As Integer
´ Konstanten
Sheet1 = "Tabelle1" ´Original
Sheet2 = "Tabelle2" ´Auswahl-Daten
´
Application.ScreenUpdating = False
Sheets(Sheet2).Activate
´ hier in Spalte "A" alle Auswahl-Daten
Range("A65536").End(xlUp).Offset(1, 0).Select
z = ActiveCell.Row - 1 ´ Anzahl der Daten
Sheets(Sheet1).Activate
Range("F7").Select
Do Until ActiveCell.Value = ""
ActiveSheet.Shapes("TextBox1_Change").Select
löscheLoop = Selection.Characters.Text
LöschenOK = True
Wert = ActiveCell.Value
Sheets(Sheet2).Activate
For i1 = 1 To z
If Cells(i1, 1).Value = Wert Then
LöschenOK = False
Exit For
End If
Next i1
´If ActiveCell.Value <> "5401" And ActiveCell.Value <> "5402" And ActiveCell.Value <> "5403" And ActiveCell.Value <> "5404" And ActiveCell.Value <> "5405" And ActiveCell.Value <> "5406" And ActiveCell.Value <> "5407" And ActiveCell.Value <> "5409" And ActiveCell.Value <> "5451" And ActiveCell.Value <> "5452" And ActiveCell.Value <> "5453" And ActiveCell.Value <> "5454" And ActiveCell.Value <> "5455" And ActiveCell.Value <> "5456" And ActiveCell.Value <> "5457" And ActiveCell.Value <> "5458" And ActiveCell.Value <> "5459" And ActiveCell.Value <> "5491" And ActiveCell.Value <> "5492" And ActiveCell.Value <> "5493" And ActiveCell.Value <> "5494" And ActiveCell.Value <> "5495" And ActiveCell.Value <> "591" Then
Sheets(Sheet1).Activate
If LöschenOK Then
ActiveCell.EntireRow.Delete
i = i + 1
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von benötigthilfe
hat mir n bisschen gehölfen kann es aber nicht richtig einbinden!
entstehen immer fehler!
und zwar hier.
ActiveSheet.Shapes("TextBox1_Change").Select
hab keine TextBox
danke trotzdem piano
ich erkläre das problem ein bisschen genauer.
Hab eine Liste, aus der mir Zeilen ausortiert werden sollen. ich habe das problem wie oben von mir beschrieben gelöst. Das Problem ist, dass die von mir eingegebenen Zahlen bei der if abfrage variabel sein sollen.
Die zur ausortierung nötigen Zahlen stehen in der 2.tabelle in zeile A.
Habe keine Textbox oder ähnliches soll alles über das 2. tabellenblatt laufen.
ich glaub die idee von piano ist schon ganz gut aber es entsteht immer ein fehler und ich bin ein anfänger. kann das problem nicht selber lösen.
danke für eure hilfe.
entstehen immer fehler!
und zwar hier.
ActiveSheet.Shapes("TextBox1_Change").Select
hab keine TextBox
danke trotzdem piano
ich erkläre das problem ein bisschen genauer.
Hab eine Liste, aus der mir Zeilen ausortiert werden sollen. ich habe das problem wie oben von mir beschrieben gelöst. Das Problem ist, dass die von mir eingegebenen Zahlen bei der if abfrage variabel sein sollen.
Die zur ausortierung nötigen Zahlen stehen in der 2.tabelle in zeile A.
Habe keine Textbox oder ähnliches soll alles über das 2. tabellenblatt laufen.
ich glaub die idee von piano ist schon ganz gut aber es entsteht immer ein fehler und ich bin ein anfänger. kann das problem nicht selber lösen.
danke für eure hilfe.
Antwort 4 von benötigthilfe
Dim i As Integer
Range("F7").Select
´Beginn der Löschung von den Zeilen mit falschen ONKZ
Do Until ActiveCell.Value = ""
´solange Zelle nicht leer
If ActiveCell.Value <> "5401" And ActiveCell.Value <> "5402" And ActiveCell.Value <> "5403" And ActiveCell.Value <> "5404" And ActiveCell.Value <> "5405" And ActiveCell.Value <> "5406" And ActiveCell.Value <> "5407" And ActiveCell.Value <> "5409" And ActiveCell.Value <> "5451" And ActiveCell.Value <> "5452" And ActiveCell.Value <> "5453" And ActiveCell.Value <> "5454" And ActiveCell.Value <> "5455" And ActiveCell.Value <> "5456" And ActiveCell.Value <> "5457" And ActiveCell.Value <> "5458" And ActiveCell.Value <> "5459" And ActiveCell.Value <> "5491" And ActiveCell.Value <> "5492" And ActiveCell.Value <> "5493" And ActiveCell.Value <> "5494" And ActiveCell.Value <> "5495" And ActiveCell.Value <> "591" Then
ActiveCell.EntireRow.Delete
i = i + 1
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
so sieht mein teil des makros aus!
Range("F7").Select
´Beginn der Löschung von den Zeilen mit falschen ONKZ
Do Until ActiveCell.Value = ""
´solange Zelle nicht leer
If ActiveCell.Value <> "5401" And ActiveCell.Value <> "5402" And ActiveCell.Value <> "5403" And ActiveCell.Value <> "5404" And ActiveCell.Value <> "5405" And ActiveCell.Value <> "5406" And ActiveCell.Value <> "5407" And ActiveCell.Value <> "5409" And ActiveCell.Value <> "5451" And ActiveCell.Value <> "5452" And ActiveCell.Value <> "5453" And ActiveCell.Value <> "5454" And ActiveCell.Value <> "5455" And ActiveCell.Value <> "5456" And ActiveCell.Value <> "5457" And ActiveCell.Value <> "5458" And ActiveCell.Value <> "5459" And ActiveCell.Value <> "5491" And ActiveCell.Value <> "5492" And ActiveCell.Value <> "5493" And ActiveCell.Value <> "5494" And ActiveCell.Value <> "5495" And ActiveCell.Value <> "591" Then
ActiveCell.EntireRow.Delete
i = i + 1
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
so sieht mein teil des makros aus!
Antwort 5 von xyxyxyx
hi :)
zwei kleine beispiele
gruss xxx
Sub test00()
Dim zahl(2) As Long
Dim zähler As Integer
zahl(0) = 1234
zahl(1) = 1456
zahl(2) = 1894
For zähler = 0 To 2
If ActiveCell.Value <> zahl(zähler) Then
Rem deine verzweigung
End If
Next zähler
End Sub
Sub test01()
Dim zahl(2) As Long
Dim zähler As Integer
For zähler = 0 To 2
zahl(zähler) = Cells(zähler + 1, 1)
Next zähler
For zähler = 0 To 2
If ActiveCell.Value <> zahl(zähler) Then
Rem deine anweisungen
End If
Next zähler
End Sub
zwei kleine beispiele
gruss xxx
Sub test00()
Dim zahl(2) As Long
Dim zähler As Integer
zahl(0) = 1234
zahl(1) = 1456
zahl(2) = 1894
For zähler = 0 To 2
If ActiveCell.Value <> zahl(zähler) Then
Rem deine verzweigung
End If
Next zähler
End Sub
Sub test01()
Dim zahl(2) As Long
Dim zähler As Integer
For zähler = 0 To 2
zahl(zähler) = Cells(zähler + 1, 1)
Next zähler
For zähler = 0 To 2
If ActiveCell.Value <> zahl(zähler) Then
Rem deine anweisungen
End If
Next zähler
End Sub
Antwort 6 von piano
Hallo
Die Zeilen
Die eigentliche Löschschleife ist nur:
Die Zeilen
Zitat:
ActiveSheet.Shapes("TextBox1_Change").Select
löscheLoop = Selection.Characters.Text
kommen von Deinem Original-Text - schmeiss sie weg!ActiveSheet.Shapes("TextBox1_Change").Select
löscheLoop = Selection.Characters.Text
Die eigentliche Löschschleife ist nur:
Do Until ActiveCell.Value = ""
LöschenOK = True
Wert = ActiveCell.Value
Sheets(Sheet2).Activate
For i1 = 1 To z
If Cells(i1, 1).Value = Wert Then
LöschenOK = False
Exit For
End If
Next i1
Sheets(Sheet1).Activate
If LöschenOK Then
ActiveCell.EntireRow.Delete
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
Antwort 7 von benoetigthilfe
Hi
hat allesgeklappt!
habe aber jetzt n neues problem!
ich möchte die variablen Zahlen jetzt über checkbox einfügen!
also wenn ich ein Kästchen anklicke sollen mehrere werte in Spalte A eingefügt werden.
es gibt mehrere Kästchen und es sollen mehrere auswählbar sein!
danke für die hilfe
hat allesgeklappt!
habe aber jetzt n neues problem!
ich möchte die variablen Zahlen jetzt über checkbox einfügen!
also wenn ich ein Kästchen anklicke sollen mehrere werte in Spalte A eingefügt werden.
es gibt mehrere Kästchen und es sollen mehrere auswählbar sein!
danke für die hilfe
Antwort 8 von piano
Ist mir etwas zu kryptisch.
Meinst Du Inputbox oder Schaltfläche? Was soll damit genau passieren?
Meinst Du Inputbox oder Schaltfläche? Was soll damit genau passieren?
Antwort 9 von benoetigthilfe
ich meine eigentlich ein Kästchen, welches man anklickt.
wenn man auf eins drauf klickt z.B. 540 dann sollen die werte 5401, 5402, 5403 .... 5409 in Spalte A der 2ten Tabelle automatisch eingefügt weden.
Dahin , wo die zahlenbfragestattfindet.
Es sollen auch mehrerer kästchen anklickbar sein und die zahlen sollen dann untereinander in der Spalte A stehen!
falls es noch genauer sein soll bitte melden!
wenn man auf eins drauf klickt z.B. 540 dann sollen die werte 5401, 5402, 5403 .... 5409 in Spalte A der 2ten Tabelle automatisch eingefügt weden.
Dahin , wo die zahlenbfragestattfindet.
Es sollen auch mehrerer kästchen anklickbar sein und die zahlen sollen dann untereinander in der Spalte A stehen!
falls es noch genauer sein soll bitte melden!
Antwort 10 von piano
Hallo
Wenn automatisch zu füllen:
ansonsten einzelne Werte:
Erstelle Rahmen in Sheet1 (Zeichnen, Autoformen, Standardformen) und ordne jedem den gewünschten Makro zu.
mfg piano
Wenn automatisch zu füllen:
Sub Kästchen540()
Dim ErsteZeile As Long, i, Wert
Dim Sheet1, Sheet2
Sheet1 = "Tabelle1"
Sheet2 = "Tabelle2"
Sheets(Sheet2).Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
ErsteZeile = Selection.Row
Wert = 5400
For i = ErsteZeile To ErsteZeile + 8
Cells(i, 1).Value = Wert + i - ErsteZeile + 1
Next i
Sheets(Sheet1).Activate
End Sub
ansonsten einzelne Werte:
Sub Kästchen540Einzeln()
Dim ErsteZeile As Long
Dim Sheet1, Sheet2
Sheet1 = "Tabelle1"
Sheet2 = "Tabelle2"
Sheets(Sheet2).Activate
Range("A65536").End(xlUp).Offset(0, 0).Select
ErsteZeile = Selection.Row
Cells(ErsteZeile + 1, 1).Value = 5401
Cells(ErsteZeile + 2, 1).Value = 5405
Cells(ErsteZeile + 3, 1).Value = 5409
.....
Sheets(Sheet1).Activate
End Sub
Erstelle Rahmen in Sheet1 (Zeichnen, Autoformen, Standardformen) und ordne jedem den gewünschten Makro zu.
mfg piano
Antwort 11 von benoetigthilfe
Danke für die hilfe
klappt alles einwandfrei!
hab aber noch ein kleines problem.
ich habe eine Spalte in der Datumsangaben sind, die aber als Text formatiert sind und so aussehen! ´2005-03-16´ ich kann sie aber nicht als datum formatieren da die ´´ davor und dahinter sind. wie kann ich diese ´´ über vba entfernen?
danke
klappt alles einwandfrei!
hab aber noch ein kleines problem.
ich habe eine Spalte in der Datumsangaben sind, die aber als Text formatiert sind und so aussehen! ´2005-03-16´ ich kann sie aber nicht als datum formatieren da die ´´ davor und dahinter sind. wie kann ich diese ´´ über vba entfernen?
danke
Antwort 12 von piano
Hallo
Wenn die Apostrophe immer da sind dann verwende die Schleife :
Gruss piano
Wenn die Apostrophe immer da sind dann verwende die Schleife :
Sub DatumTrim()
Dim LetzteZeile As Long, i, Wert
Dim Sheet1, Sheet2
Sheet1 = "Tabelle1"
Range("A65536").End(xlUp).Offset(0, 0).Select
LetzteZeile = Selection.Row
For i = 1 To LetzteZeile
Cells(i, 1).Value = Mid(Cells(i, 1).Value, 2, Len(Cells(i, 1).Value) - 2)
Next i
End Sub
Gruss piano
Antwort 13 von benoetigthilfe
klappt irgendwie nicht!
gibt hier immer einen fehler aus!
Cells(i, 1).Value = Mid(Cells(i, 1).Value, 2, Len(Cells(i, 1).Value) - 2)
und die apostrophe stehen nur in spalte D!!!
danke für die hilfe
gibt hier immer einen fehler aus!
Cells(i, 1).Value = Mid(Cells(i, 1).Value, 2, Len(Cells(i, 1).Value) - 2)
und die apostrophe stehen nur in spalte D!!!
danke für die hilfe
Antwort 14 von piano
Hallo
Hier steht die 1 für Spalte A.
Für Spalte D:
und
Zusätzlich frage ich noch, ob tatsächlich Apostrophe im String vorhanden sind:
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Zitat:
Cells(i, 1).Value
:Cells(i, 1).Value
Hier steht die 1 für Spalte A.
Für Spalte D:
Cells(i, 4).Value = Mid(Cells(i, 4).Value, 2, Len(Cells(i, 4).Value) - 2)
.und
Range(" D65536").End(xlUp).Offset(0, 0).Select
.Zusätzlich frage ich noch, ob tatsächlich Apostrophe im String vorhanden sind:
Sub DatumTrim()
Dim LetzteZeile As Long, i, Wert
Dim Sheet1, Sheet2
Sheet1 = "Tabelle1"
Range("D65536").End(xlUp).Offset(0, 0).Select
LetzteZeile = Selection.Row
For i = 1 To LetzteZeile
If InStr(1, Cells(i, 4).Value, "´") Then
Cells(i, 4).Value = Mid(Cells(i, 4).Value, 2, Len(Cells(i, 4).Value) - 2)
End If
Next i
End Sub
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von benoetigthilfe
klappt herforragend!
vielen Dank
du warst mir eine sehr große Hilfe!
mach weiter so
vielen Dank
du warst mir eine sehr große Hilfe!
mach weiter so
Antwort 16 von benoetigthilfe
Hallo
ich hab wieder ein kleines Problem und zwar:
es ist sehr ähnlcih mit dem was ich am anfang hatte nur dass dies mal nicht bestimmte Zeilen aussortiert sondern spalten aussortiert werden müssen.
Schilderung:
in zeile 1 Stehen tabellenüberschriften dessen namen zur sortierung genommen werden sollten. diese spalten anzahl bleibt immer gleich und die namen auch also es werden immer die gleichen spalten benötigt die sortierung muss nicht variabel sein.
also kann die abfrage fest sein wie bei antwort 3
ich hab wieder ein kleines Problem und zwar:
es ist sehr ähnlcih mit dem was ich am anfang hatte nur dass dies mal nicht bestimmte Zeilen aussortiert sondern spalten aussortiert werden müssen.
Schilderung:
in zeile 1 Stehen tabellenüberschriften dessen namen zur sortierung genommen werden sollten. diese spalten anzahl bleibt immer gleich und die namen auch also es werden immer die gleichen spalten benötigt die sortierung muss nicht variabel sein.
also kann die abfrage fest sein wie bei antwort 3