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

Suche nach Tabelle, laut Zellenname und ....

Suche nach Tabelle, laut Zellenname und ....
03.01.2019 20:32:53
Holger
Hallo zusammen,
Wie kann ich am besten anfangen VBA zu erlernen?
Ich stelle fest, dass ich schon die richtigen Gedankengänge habe, aber an der Formulierung hapert es dann.
Genauso bei folgendem Problem, wofür ich um Hilfestellung bitte:
Ich möchte in folgendes bestehende Makro...

Sub LNW_01_erstellen()
' LNW_01_erstellen Makro
' erstellt 01. LNW der Liste Projekte
'  Erstellt ein neues Arbeitsblatt mit dem Namen des Zelleninhaltes "B6"
Sheets("Tab Blanko").Copy Before:=Sheets(3)
Range("B6").Select
ActiveCell.FormulaR1C1 = "='Liste Projekte'!R[2]C"
On Error GoTo FEHLER
ActiveWorkbook.ActiveSheet.Name = Range("B6").Text
Exit Sub
FEHLER:
MsgBox "Leistungsnachweis bereits vorhanden",
vbCritical, "Tabelle umbenennen"
Dim rngSpalte As Range
With ActiveSheet.UsedRange
.Replace 0, True, xlWhole
For Each rngSpalte In .Columns
On Error Resume Next
rngSpalte.SpecialCells(xlCellTypeConstants, 4).Delete shift:=xlShiftUp
On Error GoTo 0
Next
End With
End Sub

....folgende Ausdruck integrieren:
Wenn ein Arbeitsblatt mit dem selben Namen,
wie Zelle "B8" aus Arbeitsblatt "Liste Projekte" existiert,dann färbe Zelle "F8" grün

(Bedingte Formatierung kann ich nicht anwenden, da der erstgenannte Ausdruck immer ein Arbeitsblatt mit anderem Namen erstellt)
VG
Holger

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 10:07:31
ChrisL
Hi Holger
Sub t()
Dim ws As Worksheet
With Worksheets("Liste Projekte")
.Range("F8").Interior.Color = xlNone
For Each ws In ThisWorkbook.Worksheets
If ws.Name = .Range("B8") Then
.Range("F8").Interior.Color = 5287936
Exit For
End If
Next ws
End With
End Sub

cu
Chris
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 12:29:35
Holger
Hallo Chris!
habe deinen Code in den bestehenden Makro eingetragen, aber es regte sich leider gar nichts.
Wenn ich ihn in das dafür vorgesehene Arbeitsblatt "Liste Projekte"(siehe Bild) unter MS Excel Objekte eintrage,stellt sich die Farbe dauerhaft ein, obwohl noch gar kein Blatt mit dem Titel der Projektnummer existiert.
Userbild
Ich hatte auch vergessen zu erwähnen, dass dieser Ausdruck für die Zeilen 8 - 25 angewendet werden soll
Zum ausprobieren, hier die angepasste Datei,
mit bereits vorgefertigten Arbeitsblättern mit Projektnummer als Blattnamen.
Das Makro soll auf Tabelle "Liste Projekte" angewendet werden.
https://www.herber.de/bbs/user/126487.xlsx
Man könnte auch alternativ folgendes sagen:
Vergleiche den Bereich "Liste Projekte!B8:B25" mit der Zelle "B6" aller Arbeitsblätter.
Wenn Treffer Markiere in "Liste Projekte" den Treffer in entsprechender Zeile von A bis E oder nur die Zeile in Spalte F in grün
Geht das evtl. einfacher?
Gruß
Holger
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 12:44:12
ChrisL
Hi Holger
Das pauschale Fehlerhandling ist nicht ganz die feine Art, aber funktioniert...
Sub t()
Dim ws As Worksheet
With Worksheets("Liste Projekte")
.Range("F8:F25").Interior.Color = xlNone
On Error Resume Next
For Each ws In ThisWorkbook.Worksheets
.Cells(Application.Match(ws.Range("B6"), .Columns(2), 0), 6).Interior.Color = 5287936
Next ws
On Error GoTo 0
End With
End Sub
cu
Chris
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 14:33:36
Holger
Hallo Chris,
leider noch nicht ganz.
Im Tabellenkopf wird "erstellt" auch zu grün.
Habe den Code in Allgemein zu der Tabelle "Liste Projekte" eingetragen, ist das korrekt?
Zusatzfrage:
Kann man eine Art Dauerschleife einbauen, dass eine Prüfungen stattfindet,
wenn sich die Werte in Spalte B ändern ?
Gruß Holger
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 15:03:09
Holger
Zusatz:
ich glaube der definierte bereich ist
....
.Range("B8:B25").interior.Color = xlNone
...

AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 15:43:56
ChrisL
Hi Holger
Bei mir wird "erstellt" nicht grün, was wohl daran liegt, dass die Beispieldatei nicht mit deiner Datei übereinstimmt.
Standardmodul:
Sub t()
Dim ws As Worksheet
With Worksheets("Liste Projekte")
.Range("F8:F25").Interior.Color = xlNone
On Error Resume Next
For Each ws In ThisWorkbook.Worksheets
If IsNumeric(ws.Range("B6")) Then _
.Cells(Application.Match(ws.Range("B6"), .Columns(2), 0), 6).Interior.Color = 5287936
Next ws
On Error GoTo 0
End With
End Sub

Tabellenmodul:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Call t
End Sub
cu
Chris
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 17:21:55
Holger
Wunderbar!
Aber..Das grün bleibt noch permanent, auch wenn Tabelle gelöscht wurde.
Dafür hätte ich die Idee:
Das erstellte Blatt hat einen Button "Löschen"
mit diesem Code:
Sub Lösche_Arbeitsblatt()
ActiveSheet.Select
ActiveWindow.SelectedSheets.Delete
End Sub
Hier müsste nur rein "
-Vergleiche Zelle "B6" mit Bereich "B8:B25" der "Liste Projekte"
-Wenn Treffer, dann bei entrechender Zeile in Spalte F keine Füllung
hast du dazu noch bitte bitte die Muße ? ;-)
Beste Grüße
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 17:27:06
ChrisL
Hi
Call t 

ruft das andere Makro auf.
könntest auch ein Worksheet_Activate Ereignis verwenden
cu
Chris
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 18:26:54
Holger
Jawoll...funzt !!!;-)
Riesen Dank an dich und ein schönes Wochenende!
Beste Grüße
Holger
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 18:42:29
Holger
Ich musste es allerdings doch etwas abwandeln, weil beim Tabelle löschen alle Färbungen verschwanden.
Darum habe ich deinen Code erneut kopiert und umgewandelt in "Keine Füllung"
in Modul

Sub t()
Dim ws As Worksheet
With Worksheets("Liste Projekte")
.Range("F8:F25").Interior.Color = xlNone
On Error Resume Next
For Each ws In ThisWorkbook.Worksheets
If IsNumeric(ws.Range("B6")) Then _
.Cells(Application.Match(ws.Range("B6"), .Columns(2), 0), 6).Interior.Color = 5287936
Next ws
On Error GoTo 0
End With
End Sub
Sub s()
'existiert Tabelle laut namen "B6" wir "Liste Projekte"Spalte F weiß
Dim ws As Worksheet
With Worksheets("Liste Projekte")
.Range("F8:F25").Interior.Color = xlNone
On Error Resume Next
For Each ws In ThisWorkbook.Worksheets
If IsNumeric(ws.Range("B6")) Then _
.Cells(Application.Match(ws.Range("B6"), .Columns(2), 0), 6).Interior.Color = xlNone
Next ws
On Error GoTo 0
End With
End Sub
und in Tabelle
Private Sub Worksheet_Change1(ByVal Target As Range)
If Target.Column = 2 Then Call t
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then Call s
End Sub
Call t wie du sagtest tritt beim erstellen des Blattes in Krafft
Call s also beim löschen
Und den Löschmakro sieht dann so aus
Sub Lösche_Arbeitsblatt()
Call s
ActiveSheet.Select
ActiveWindow.SelectedSheets.Delete
Call t
End Sub
Wieder was gelernt! Dank dir!
Gruß
Holger
Anzeige
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 17:50:07
Daniel
Hi
warum sollte das nicht mit Bedingter Formatierung funktionieren?
wenn du überprüfen willst, ob ein Tabellenblatt existiert mit dem gleichen Namen wie der Wert in B8, dann verwende Folgende Formel für die Bedingte Formatierung für die Zellen in F8:F25
=NICHT(ISTFEHLER(INDIREKT("'"&B8&"'!A1")))
Da du Zahlen als Tabellenblattnamen verwendest, müssen die Hochkommas eingesetzt werden.
Gruß Daniel
AW: Suche nach Tabelle, laut Zellenname und ....
04.01.2019 19:59:57
Holger
Gruß Daniel !
OH Wahnsinn!
Naja, wenn man noch nicht weiß was wie umsetzbar ist, dann kommt man nicht auf sowas.
mit den Istfehler und indirekt habe ich mich noch nicht so intensiv befasst. xD
Aber danke für die Variante ! Ich sauge alles auf !
Gruß
Holger
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige