vielleicht ein ganz simples Problem, aber ich versuche mittels Makro einen Begriff auf einem nicht aktivierten Tabellenblatt zu löschen - geht das nicht?
Code:
Sub suchen()
Dim c As Range Dim firstaddress As String Dim sbegriff As String Dim Datum As Date Dim Startwoche As String Dim Startwoche_Name As String Dim Suchvariable As Range Dim Startspalte As String Dim i As Integer
sbegriff = InputBox("Bitte Suchbegriff eingeben") Datum = InputBox("Datum")
Startwoche = CStr(WorksheetFunction.IsoWeekNum(Datum)) Set Suchvariable = ThisWorkbook.Sheets(Startwoche).Range("A1:G3").Find(what:=Datum, LookIn:=xlValues, lookat:=xlWhole)
With ThisWorkbook.Sheets(Startwoche).Range(Cells(2, Suchvariable.Column), Range("G3")) Set c = .Find(sbegriff, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then firstaddress = c.Address Do Range(Cells(c.Row, c.Column), Cells(c.Row, c.Column)) = "" Set c = .FindNext(c) Loop Until c Is Nothing End If End With End Sub
vielen Dank für die Rückmeldung. So genau verstehe ich das Problem noch nicht. Kannst du mir das erläutern, wo der Bezug zum "aktiven" Tabellenblatt" ist?
Code:
sbegriff = InputBox("Bitte Suchbegriff eingeben") Datum = InputBox("Datum")
Startwoche = CStr(WorksheetFunction.IsoWeekNum(Datum)) Set Suchvariable = ThisWorkbook.Sheets(Startwoche).Range("A1:G3").Find(what:=Datum, LookIn:=xlValues, lookat:=xlWhole)
With ThisWorkbook.Sheets(Startwoche) With .Range(Cells(2, Suchvariable.Column), Range("G3")) Set c = .Find(sbegriff, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then firstaddress = c.Address Do Range(Cells(c.Row, c.Column), Cells(c.Row, c.Column)) = "" Set c = .FindNext(c) Loop Until c Is Nothing End If End With End With
die Punkte musst Du auch noch im Do-Loop-Codebereich beachten.
Das With ist u.a. dazu, um dir einiges an Schreibarbeit zu sparen Du musst aber den zugehörigen Rest so schreiben, als würde der vordere Teil auch da stehen.
Mit nur einem With hättest Du es so schreiben müssen, wobei man über die Notwendigkeit von ThisWorkbook reden könnte :
With ThisWorkbook.Sheets(Startwoche).Range(ThisWorkbook.Sheets(Startwoche).Cells(2, Suchvariable.Column), ThisWorkbook.Sheets(Startwoche).Range("G3"))
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • EasY
Das Thisworkbook ist bei mir so drin - bei meinem VBA-Selbststudium habe ich damit gestartet und nun schreibe ich es immer. Schaden kann es denke ich nicht :). Was ich bisher allerdings nie verstanden hatte : den Unterschied von worksheets und sheets. Aber das ist ein anderes Thema.