Supportnet Computer
Planet of Tech

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

Antwort 2 von piano

Hallo
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.

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!

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

Antwort 6 von piano

Hallo
Die Zeilen
Zitat:
ActiveSheet.Shapes("TextBox1_Change").Select
löscheLoop = Selection.Characters.Text
kommen von Deinem Original-Text - schmeiss sie weg!
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

Antwort 8 von piano

Ist mir etwas zu kryptisch.
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!

Antwort 10 von piano

Hallo
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

Antwort 12 von piano

Hallo
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

Antwort 14 von piano

Hallo
Zitat:
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

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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: