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

nochmal Löschen von bestimmten Zellen per Makro

nochmal Löschen von bestimmten Zellen per Makro
06.07.2014 19:05:02
bestimmten
Hallo liebes Forum,
bitte nocheinmal um Hilfe, obwohl ich das Problem so ähnlich schon einmal hatte:
Zelle B ist im Normalzustand mit dem Wort "frei" belegt und auf grüne Füllung (über bedingte Formatierung) eingestellt. (Schrift Arial,Größe 12)
In Zelle B kann eine Artikel-Nummer eingegeben werden, danach werden Zellen C und D automatisch (über SVERWEIS) ausgefüllt.
In Spalten E, F und I werden weiter manuell Werte eingetragen.
Ich möchte, wenn die Zeile sozusagen "belegt" ist, eine Löschfunktion (Schaltfläche) haben, die die Spalten B, E, F und I leert und wo am Ende in Spalte B wieder "frei" drin steht mit der bedingten Formatierung auf grün (und Cursor in Zelle B).
Weiterhin möchte ich diese Löschfunktion für jede einzelne Zeile der Tabelle (bis ca 1000 Zeilen)zur Verfügung haben. Zu beachten ist, dass Spalten C u D über SVerweis mit B verküpft sind und diese Verknüpfung ja erhalten bleiben soll.
Ich bitte nocheinmal um ausführliche verständliche Hilfestellung.
Vielen Dank im Voraus!
Holm

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
06.07.2014 21:59:42
bestimmten
Hallo Holm,
nach folgend entsprechende Makros.
Gruß
Franz

'Im Tabellenblatt eine Schaltfläche aus den Formularsteuerelementen einfügen und das folgende _
Makro der Schaltfläche zuweisen
Sub AlleArtikelNr_auf_Frei()
Dim wks As Worksheet, Zeile_L As Long
Const Zeile_1 As Long = 2 'Nummer der 1. Zeile in die Daten eingetragen werden - ggf.  _
anpassen
Set wks = ActiveWorkbook.Worksheets("Tabelle1") 'Name des Tabelleblattes anpassen!!!
If MsgBox("Alle Werte in Spalte B auf ""frei"" setzen und in Spalten E,F und I löschen?", _
vbQuestion + vbOKCancel, "Werte in Tabelle """ & wks.Name & """ zurücksetzen") _
= vbCancel Then Exit Sub
With wks
'Letzte Zeile mit Daten in Spalte C (Spalte mit Formeln)
Zeile_L = .Cells(.Rows.Count, 3).End(xlUp).Row
If Zeile_L >= Zeile_1 Then
'Werte in Zellen in Spalte B auf "Frei" setzen
.Range(.Cells(Zeile_1, 2), .Cells(Zeile_L, 2)).Value = "frei"
'Werte in Zellen in Spalte E bis F löschen
.Range(.Cells(Zeile_1, 5), .Cells(Zeile_L, 6)).ClearContents
'Werte in Zellen in Spalte I löschen
.Range(.Cells(Zeile_1, 9), .Cells(Zeile_L, 9)).ClearContents
End If
Cells(Zeile_1, 2).Select
End With
End Sub
'Code unter dem Tabellenblatt in dem die Daten eingegeben werden !!!!
'Ereignismakro - Doppelklick
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'Per Doppelklick in eine Zelle in Spalte B die Zeile wieder auf "frei" setzen.
Dim Zeile As Long, Zeile_L As Long
Const Zeile_1 As Long = 2 'Nummer der 1. Zeile in die Daten eingetragen werden - ggf.  _
anpassen
With Me
'Letzte Zeile mit Daten in Spalte C (Spalte mit Formeln)
Zeile_L = .Cells(.Rows.Count, 3).End(xlUp).Row
Select Case Target.Column
Case 2 'Spalte B
If Target.Row >= Zeile_1 And Target.Row 

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
07.07.2014 19:30:26
bestimmten
Hallo und danke!
Allerdings löscht das Makro in alle Zeilen der Tabelle die entsprechenden Spalten!
Ich möchte nur in einer vorher (irgendwie) ausgewählten bzw markierten Zeile diese bestimmten Spalten löschen!

AW: nochmal Löschen von bestimmten Zellen per Makro
07.07.2014 20:15:44
bestimmten
Hi
dann probier mal folgenden Code für den Button, hier werden nur die seletierten Zeilen bearbeitet:
Intersect(Selection.EntireRow, Range("B:B")).Value = "frei"
Intersect(Selection.EntireRow, Range("E:F,I:I")).ClearContents
die Spalten C und D solltest du nicht anfassen, die Formeln müssen ja erhalten bleiben.
hier würde ich in der Tabelle, die der SVerweis als 2. Parameter verwendet, einen Datensatz "frei" anlegen, welcher dann herangezogen wird und dort die entsprechenden Werte eintragen ("leer", oder ="", wenn du eine leerzelle im Ergebnis sehen willst)
Gruß Daniel

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
08.07.2014 09:33:00
bestimmten
Hallo Holm,
es sind ja 2 Makros.
Das eine ist zuständig für das Löschen aller Eingabewerte.
Das 2. Makro ist zuständig für das zurücksetzen der Einträge in einer einzelnen Zeile.
Dieses Makro muss -wie geschrieben- im VBA-Editor unter dem entsprechenden Tabellenblatt eingefügt werden. Nach Doppelklick auf eine Zelle in Spalte B werden nach Bestätigung die Einträge in dieser Zeile zurückgesetzt.
Wenn nicht mit dem Ereignismakro arbeiten willst, dann kannst du das folgende Makro benutzen, das nach Bestätigung die EInträge in der Zeile mit der aktiven Zelle zurücksetzt.
Gruß
Franz
Sub Artikelnummer_auf_frei_in_Zeile()
Dim Zeile As Long
Const Zeile_1 As Long = 2 'Nummer der 1. Zeile in die Daten eingetragen werden - ggf. _
anpassen
With ActiveSheet
'Letzte Zeile mit Daten in Spalte C (Spalte mit Formeln)
Zeile = ActiveCell.Row
If Zeile >= Zeile_1 Then
If MsgBox("Werte in Zeile auf ""frei"" setzen und in Spalten E,F und I löschen?", _
vbQuestion + vbOKCancel, "Werte in Zeile """ & Zeile & """ zurücksetzen") _
= vbOK Then
'Wert in Zelle in Spalte B auf "Frei" setzen
.Cells(Zeile, 2) = "frei"
'Werte in Zellen in Spalte E bis F löschen
.Range(.Cells(Zeile, 5), .Cells(Zeile, 6)).ClearContents
'Wert in Zelle in Spalte I löschen
.Cells(Zeile, 9).ClearContents
End If
End If
End With
End Sub

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
10.07.2014 19:10:49
bestimmten
Hallo Franz,
danke für deine Hilfe, jetzt hab ichs gepackt!
Gleich noch ein Zusatz, wenn möglich:
Kann man bei diesem Rücksetzen der Spalten pro Zeile auch automatisch in Spalte C und D den SVerweis (der dort reingehört und ja eventuell mal aus Versehen manuell mit rausgelöscht werden könnte, wenn man nicht mit dem Tabellenschutz dieser Spalten arbeiten möchte) sozusagen auch mit erneuern?
In C müsste dann stehen:
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH)))
und in D:
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH)))
Das müsste dann natürlich bei Doppelklick und der Bestätigung für jede entsprechende Zeile funktionieren.
Danke im Voraus!
Holm

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
11.07.2014 09:38:49
bestimmten
Hallo Holm,
mit Eintragen der Formeln sieht der entsprechende Abschnitt des Makros wie folgt aus.
Gruß
Franz
        If MsgBox("Werte in Zeile auf ""frei"" setzen und in Spalten E,F und I löschen?", _
vbQuestion + vbOKCancel, "Werte in Zeile """ & Zeile & """ zurücksetzen") _
= vbOK Then
'Wert in Zelle in Spalte B auf "Frei" setzen
.Cells(Zeile, 2) = "frei"
'SVERWEIS-Formeln einfügen
.Cells(Zeile, 3).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC2,Tabelle3!C1:C3,2,FALSE)),""""," _
& "(VLOOKUP(RC2,Tabelle3!C1:C3,2,FALSE)))"
.Cells(Zeile, 4).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC2,Tabelle3!C1:C3,3,FALSE)),""""," _
& "(VLOOKUP(RC2,Tabelle3!C1:C3,3,FALSE)))"
'Werte in Zellen in Spalte E bis F löschen
.Range(.Cells(Zeile, 5), .Cells(Zeile, 6)).ClearContents
'Wert in Zelle in Spalte I löschen
.Cells(Zeile, 9).ClearContents
End If
End If

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
12.07.2014 12:13:11
bestimmten
Hallo Franz,
also ich arbeite mit der Variante Doppelklick in Zelle B zum Löschen.
In welches Makro muss ich die 2mal SVerweis
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH)))
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH)))
eintragen? In das Makro oder in den Code direkt im Tabellenblatt? Und an welche Stelle?
Ist das dann automatisch für alle Zeilen gültig? Der erste SVERWEIS ist ja Zeile 3....muss ja dann für jede andere Zeile auch gültig sein...
Danke im Voraus!
Holm

Anzeige
AW: nochmal Löschen von bestimmten Zellen per Makro
14.07.2014 18:17:54
bestimmten
Hallo Franz, hast es bestimt überlesen, hatte nochmal nachgefragt....
also ich arbeite mit der Variante Doppelklick in Zelle B zum Löschen.
In welches Makro muss ich die 2mal SVerweis
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;2;FALSCH)))
=WENN(ISTNV(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH));"";(SVERWEIS($B3;Tabelle3!A:C;3;FALSCH)))
eintragen? In das Makro oder in den Code direkt im Tabellenblatt? Und an welche Stelle?
Ist das dann automatisch für alle Zeilen gültig? Der erste SVERWEIS ist ja Zeile 3....muss ja dann für jede andere Zeile auch gültig sein...
Danke im Voraus!
Holm
Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige