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

Spalten durchsuchen ggf. Zeile löschen var.Inhalt

Spalten durchsuchen ggf. Zeile löschen var.Inhalt
Henning
Hallo Experten,
ich bin ganz neu in diesem Forum, in Sachen VBA bin ich leider noch nicht besonders versiert. Ich habe ein Makro geschrieben, das eine Rechnung erstellt und gewisse Zeilen (nicht immer gleich vielem, da logischerweise die Rechnungspositionen variieren) in die Rechnungsvorlage kopiert.
Beispielaufbau der Datei:
Absender Empfänger ...
Betreff
Rechnungstext: Bis hier sind die Einträge fix.
Dann werden mittels eines Makros die jeweiligen Abrechnungszeilen eingefügt. Bis hier war das kein Problem auch nicht mit den variierenden Zeilen.
Nur das Problem ist folgendes: Ich möchte genau die Zeilen die eingfügt wurden wieder löschen können, nicht mehr nicht weniger!
Ich habe mir gedacht ich übergebe die Abrechnungspositionen (Text) in Variablen und Frage die Spalte B dann nach diesen Inhalten ab, wenn der Inhalt in einer Zeile gefunden wird, dann soll die ganze Zeile gelöscht werden. Daran scheiter ich.
Wenn ich einen Tip und Hilfe von euch bekäme würde ich mich riesig freuen.
Vielen Dank
M.f.G.
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 09:53:25
EvilRik
Hallo Henning,
hier mal ein Vorschlag. Der Variable strSuche kannst du ja über eine Schleife deine Abrechnungspositionen als Text zuweisen.
    ...
strSuche = "Dein Text"
Fundzeile = WorksheetFunction.Match(strSuche, Range("B:B"), 0)
Rows(Fundzeile).Delete 'Löscht Zeile
'Rows(Fundzeile).ClearContents 'Löscht Inhalte
...

Gruß Henrik
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 10:03:58
Henning
Hallo Henrik,
vielen Dank für die schnelle Antwort. Ich habe versucht es einzubauen, leider bin ich wie gesagt noch ein absoluter Laie in Sachen VBA, lerne aber täglich etwas dazu und werde sobald es mir möglich ist auch anderen Gern helfen ;-)
Hier mal mein Skript wie es bisher aussieht: (Bitte nicht lachen)
Als erstes mal das Skript, das die Rechnung erstellt. Funzt soweit ganz gut:
Sub Rechnungerstellen()
Sheets("Eingabeblatt").Select
Range("C15:C27").Select
Selection.Copy
Sheets("Ref").Select
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Eingabeblatt").Select
Range("G15:G27").Select
Selection.Copy
Sheets("Ref").Select
Range("H2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("B17:H21").Select
Selection.Copy
Range("B1").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("B1").End(xlDown).Offset(0, -1).Select
Rows(ActiveCell.Row).Select
Range(Selection, Selection.End(xlUp).Offset(1, 0)).Select
Selection.Copy
Sheets("Rechnung").Select
Rows("26:26").Select
Selection.Insert Shift:=xlDown
Sheets("Rechnung").Select
End Sub

-----------------
Und Hier mein Anfang für das Löschskript:
Sub Zellinhaltlösch()
Dim A1 As String
Dim A2 As String
Dim A3 As String
Dim A4 As String
Dim A5 As String
Dim A6 As String
Dim A7 As String
Dim A8 As String
Dim A9 As String
Dim A10 As String
Dim A11 As String
Dim A12 As String
Dim A13 As String
Dim RAB As String
Dim Reis As String
Dim Zwischen As String
Dim Sum As String
Dim Mwst As String
Sheets("Eingabeblatt").Select
A1 = Range("C15").Value
A2 = Range("C16").Value
A3 = Range("C17").Value
A4 = Range("C18").Value
A5 = Range("C19").Value
A6 = Range("C20").Value
A7 = Range("C21").Value
A8 = Range("C22").Value
A9 = Range("C23").Value
A10 = Range("C24").Value
A11 = Range("C25").Value
A12 = Range("C26").Value
A13 = Range("C27").Value
RAB = Range("C29").Value
Reis = Range("C30").Value
Zwischen = Range("C31").Value
Sum = Range("C32").Value
Mwst = Range("C33").Value
End Sub

Vielen Dank.
Gruß
Henning
Anzeige
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 11:59:01
EvilRik
Hallo Henning,
Teil1: Versuch mal, ob du deins hiermit ersetzen kannst. Wenn nicht, dann egal.

Sub Rechnungerstellen()
Dim wksE As Worksheet
Dim wksR As Worksheet
Set wksE = ThisWorkbook.Worksheets("Eingabeblatt")
Set wksR = ThisWorkbook.Worksheets("Ref")
wksE.Range("C15:C27").Copy
wksR.Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
wksE.Range("G15:G27").Copy
With wksR
.Range("H2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,  _
Transpose:=False
.Range("B17:H21").Copy
.Range("B1").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
.Rows("2:" & Range("B1").End(xlDown).Offset(0, -1).Row).Copy
End With
With ThisWorkbook.Worksheets("Rechnung")
.Insert Shift:=xlDown
.Select
End With
Application.CutCopyMode = False
End Sub

Dieser Teil 2 löscht auf dem Blatt "Rechnung" in entsprechenden Zeilen die Inhalte.
Bin jetzt davon ausgegangen deine Variablen (A1-A30,RAB,etc.) im Blatt "Rechnung" in Spalte B suchen möchtest. Kannst du natürlich entsprechend anpassen.

Sub Zellinhalt_loeschen()
Dim strSuche As String, zae1 As Integer, Fundzeile As Long
On Error Resume Next
For zae1 = 15 To 30
'übergibt der Variable strSuche von Blatt: "Eingabeblatt" die Inhalte von C15-C30
With ThisWorkbook.Worksheets("Eingabeblatt")
strSuche = .Cells(zae1, "C")
End With
'durchsucht Blatt: "Rechnung" nach entspr. Inhalt und löscht bei Fund den Inhalt der  _
Fundzeile
With ThisWorkbook.Worksheets("Rechnung")
Fundzeile = WorksheetFunction.Match(strSuche, .Range("B:B"), 0)
If Fundzeile > 0 Then
.Rows(Fundzeile).ClearContents
End If
End With
Next zae1
End Sub

Gruß Henrik
Anzeige
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 13:05:25
Henning
Hallo Henrik,
wow vielen herzlichen Dank, da lag ich ja etwas daneben mit meinem Skript. Leider klappt es nicht. Das Makro läuft zwar aber ohne Wirkung.
Ich habe hier https://www.herber.de/bbs/user/71556.xls mal meine Datei hochgeladen. Vlt. siehst du das Problem natürlich nur wenn du Zeit und lust hast.
Vielen Dank
Gruß Henning
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 13:06:48
Henning
Wäre gut wenn du das passende Skript einfach wieder hier rein stellst, dann brauchst du nicht up- und ich nichts downladen.
Danke
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 13:44:44
EvilRik
Hallo Hennring,
Sub Rechnungerstellen()
Dim wksE As Worksheet, wksR As Worksheet
Application.ScreenUpdating = False
Set wksE = ThisWorkbook.Worksheets("Eingabeblatt")
Set wksR = ThisWorkbook.Worksheets("Ref")
wksE.Range("C15:C27").Copy
wksR.Range("B2").PasteSpecial Paste:=xlPasteValues
wksE.Range("G15:G27").Copy
With wksR
.Range("H2").PasteSpecial Paste:=xlPasteValues
.Range("B17:H21").Copy
.Range("B2").End(xlDown).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
.Rows("2:" & .Range("B2").End(xlDown).Offset(0, -1).Row).Copy
End With
With ThisWorkbook.Worksheets("Rechnung")
.Rows(25).Insert Shift:=xlDown
End With
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Sub Zellinhalt_loeschen()
Dim strSuche As String, zae1 As Integer, Fundzeile As Long
Application.ScreenUpdating = False
On Error Resume Next
For zae1 = 16 To 2 Step -1
With ThisWorkbook.Worksheets("Ref")
strSuche = .Cells(zae1, "B")
End With
With ThisWorkbook.Worksheets("Rechnung")
Fundzeile = WorksheetFunction.Match(strSuche, .Range("B:B"), 0)
If Fundzeile > 0 And strSuche  "" Then
.Rows(Fundzeile).Delete
End If
End With
Next zae1
Application.ScreenUpdating = True
End Sub

Gruß Henrik
Anzeige
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 14:11:36
Henning
Hallo Henrik,
super ich bin begeistert, vielen herzlichen Dank für die Hilfe. Sollten wir uns mal sehen ist auf jeden Fall n Bierchen drin.
Klasse!
Gruß Henning
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
15.09.2010 14:42:04
Henning
Hallo Henrik,
eins ist mir noch aufgefallen, wenn ich einmal mehr das Löschmakro ausführe löscht er mir die Betreffzeile, dann ist das ganze Formular verschoben und sozusagen "zerschossen" wie kann ich das umgehen. Ein Sperren der Zellen nützt leider nichts...
Gruß Henning
AW: Spalten durchsuchen ggf. Zeile löschen var.Inhalt
16.09.2010 09:10:04
EvilRik
Hallo Henning,
Kurz zur Erklärung, es wird die Spalte B auf Rechnung durchsucht. Und zwar nach den einzelnen Texten aus der Spalte B auf Ref. Bei Fund wird diese Zeile dann auf Rechnung gelöscht.
Die BetreffZeile kann eigentlich nur gelöscht werden, wenn sie den gleichen Text enthält wie der, nachdem gesucht wird.
Gegenlenken kannst du damit, indem du nicht die komplette Spalte B auf Rechnung durchsuchst, sondern nur einen Bereich.
Ersetz:

Fundzeile = WorksheetFunction.Match(strSuche, .Range("B:B"), 0)

durch:

Fundzeile = WorksheetFunction.Match(strSuche, .Range("B24:B100"), 0)

Bitte pass die Zeilen bei Bedarf entsprechend an. So sollte es funktionieren.
Gruß Henrik
Anzeige

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige