von fcs habe ich folgende VBA-Codes bekommen, um per Doppelklick in Spalte B (und Bestätigung) die Spalten E, F und G zu leeren und in Spalte B "frei" zu schreiben. KLappt soweit auch super!! :-)
Im Tabellenblatt:
'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_3 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
Und das Makro:
Sub AlleArtikelNr_auf_Frei()
Dim wks As Worksheet, Zeile_L As Long
Const Zeile_3 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_3, 2), .Cells(Zeile_L, 2)).Value = "frei"
'Werte in Zellen in Spalte E bis F löschen
.Range(.Cells(Zeile_3, 5), .Cells(Zeile_L, 6)).ClearContents
'Werte in Zellen in Spalte I löschen
.Range(.Cells(Zeile_3, 9), .Cells(Zeile_L, 9)).ClearContents
End If
Cells(Zeile_3, 2).Select
End With
End Sub
Nun möchte ich, dass Spalten C und D bei diesem Zurücksetzen automatisch den für diese Spalten normalerweise (immer drin stehenden) gültigen SVerweis (zurück)erhalten (für den Fall, dass diese SVerweise mal aus C und D rausgelöscht werden sollten, ich muss ohne Zellschutz arbeiten!).
Die erste Zeile mit SVerweis ist die 3, der erste ist für Spalte C, der zweite für Spalte D:
=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)))
Ich nehme an, dass die beiden SVerweise irgendwie mit in den Code im Tabellenblatt ooer in das Makro eingebaut werden müssen....
Danke für eure Hilfe!
Gruß Holm