Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1668to1672
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

VBA Blatt einblenden bei bestimmten Zellenwerten

VBA Blatt einblenden bei bestimmten Zellenwerten
18.01.2019 11:52:24
Tobias
Hallo liebes Forum,
Ich stehe erneut vor einem Problem und hoffe auf eure Lösung dabei :)
Leider kann ich meine Datei nicht hochladen, da diese extrem komplex ist und mit noch 2 anderen Dateien verknüpft ist etc.. Daher versuch ich mal zu erklären was ich brauche.
Also ich habe in einer Mappe *zig verschiedene Blätter mit je verschiedenem Namen. Diese Mappe erzeugt einen Fertigungsauftrag für unsere Firma und wird als Vorlage verwendet.
Bis auf ein paar Blätter sind alle anderen standardmäßig ausgeblendet.
In einem der sichtbaren Blätter steht eine Formel in Zelle S16 welche mir dann einen Wert ausgibt der in etwa so aussieht:
DS1200/439; AS2000/216; AS2000/217; WP0600/004; CO3000/1155
Dieser Wert ändert sich je nach Projekt.
Wenn nun also in dieser Zelle der Wert "DS" vorkommt, soll das Tabellenblatt "Drehscheibe" und "Antrieb (DS)" eingeblendet werden.
Das selbe gilt für die Werte "CO", "WP" und "AS". Da soll dann entsprechend "Controller", "Wand-Polarisator" und "Antennenstativ" eingeblendet werden.
und jetzt kommts...
Bei manchen Projekten sind (wie oben gezeigt) mehrere des selben Typs enthalten.
D.h. wenn in S16 der Wert, 2x oder öfter "AS" enthält (oder "CO"...), soll dann auch noch zusätzlich "Antennenstativ (2)" (oder "Controller (2)") eingeblentet werden.
habe als Grundlage folgenden code:

Sub FA_einblenden()
ActiveSheet.Range("S16").Select
If strCellValue Like "*" & CO & "*" Then
Sheets("Controller").Visible = True
End If
If strCellValue Like "*" & DS & "*" Then
Sheets("Drehscheibe").Visible = True
End If
If strCellValue Like "*" & DS & "*" Then
Sheets("Antrieb (DS)").Visible = True
End If
End Sub

Der funktioniert soweit, nur dass wenn mehr als einmal "CO" oder "AS" in S16 steht, weis ich nicht wie ich ihm sagen soll, dass er das vorkommen Zählen soll und dementsprechend die Blätter einblenden soll....
Also vielleicht nochmal kurz zusammengefasst:
Wenn in Zelle S16 beispielsweise "CO" steht, soll er Blatt "Controller" einblenden(sichtbar machen). Wenn in Zelle S16 "CO" zwei mal vorkommt, soll er die Blätter "Controller" und "Controller (2)" einblenden. usw...
Ich hoffe ihr versteht mich und freue mich auf eure Hilfe :)
Liebe Grüße,
Tobi

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Blatt einblenden bei bestimmten Zellenwerten
18.01.2019 13:22:01
Alex
Hallo Tobi,
anbei eine Function die das mehrfache zählen eines Teilstrings ermöglicht und wie du sie aufrufst.
In das CallFunction Makro kannst du deine Logik Wenn result = 0 oder 1 oder > 1 ist einbauen.
Hoffe das hilft. LG, Alex
Funktion von: http://codevba.com/visual-basic-source-code/vb-string/count_occurrences_in_a_string.htm#.XEHAPWeWyTM
Function StringCountOccurrences(strText As String, strFind As String, _
Optional lngCompare As VbCompareMethod) As Long
' Counts occurrences of a particular character or characters.
' If lngCompare argument is omitted, procedure performs binary comparison.
'Testcases:
'?StringCountOccurrences("","") = 0
'?StringCountOccurrences("","a") = 0
'?StringCountOccurrences("aaa","a") = 3
'?StringCountOccurrences("aaa","b") = 0
'?StringCountOccurrences("aaa","aa") = 1
Dim lngPos As Long
Dim lngTemp As Long
Dim lngCount As Long
If Len(strText) = 0 Then Exit Function
If Len(strFind) = 0 Then Exit Function
lngPos = 1
Do
lngPos = InStr(lngPos, strText, strFind, lngCompare)
lngTemp = lngPos
If lngPos > 0 Then
lngCount = lngCount + 1
lngPos = lngPos + Len(strFind)
End If
Loop Until lngPos = 0
StringCountOccurrences = lngCount
End Function
Sub CallFunktion()
Dim result As Integer
Dim strSearchFor As String
Dim strSearchIn As String
strSearchIn = "dc example dc"
strSearchFor = "dc"
result = StringCountOccurrences(strSearchIn, strSearchFor)
MsgBox result
End Sub

Anzeige

335 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige