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

Function auf einzelne Worksheets bezogen

Function auf einzelne Worksheets bezogen
09.07.2014 07:55:28
Pascal
Guten Tag miteinander
Dank der grosszügigen und Super - Hilfe hier im Forum hab ich vor Kurzem u.a. folgende Function erhalten, welche mir dazu dient, aus einem Textfeld raus (Userform) noch während ich Text ins Textfeld schreibe, schon mit dem Durchsuchen einer grossen Excel-Datenbank zu beginnen.
Funzt soweit alles perfekt.
Nun gilt es aber diese Function so anzupassen, dass nicht in allen Worksheets der Excel-Arbeitsmappe gesucht wird, sondern nur in Worksheets, die genauen Kriterien entsprechen.
so z.B. dürfen nur in Tabellenblättern gesucht werden, welche mit "D_" beginnen.
Dazu dürfen bestimmte Tabellenblätter (z.B. "D_Suche_1") nicht durchsucht werden.
wie also kann ich die Function so anpassen, dass sich das "For Each wks In Worksheets" auf einen vorher festgelegten Kriterienbereich bezieht ?
Herzlichen Dank für Eure Untersützung!
'Funktion für die Online-Suche
'=====================================
Private Function DasArray()
Dim oCells As Object, wks As Worksheet, rngC As Range
Dim oKey, arrTmp, n As Long
Set oCells = CreateObject("Scripting.dictionary")
For Each wks In Worksheets
For Each rngC In wks.UsedRange.Cells
If rngC  "" Then
Select Case rngC.Column
Case 2, 4, 6, 8, 18: oCells(rngC) = rngC.Value 'Hier können die Spalten eingegeben  _
werden, in welchen gesucht werden soll
End Select
End If
Next
Next
ReDim arrTmp(1 To oCells.Count, 1 To 3)
For Each oKey In oCells
n = n + 1
arrTmp(n, 1) = oKey.Parent.Name
arrTmp(n, 2) = oKey.Address
arrTmp(n, 3) = oCells(oKey)
Next
DasArray = arrTmp
End Function

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Function auf einzelne Worksheets bezogen
09.07.2014 08:10:16
Matthias
Hallo
nur als erster Ansatz(da Bedingung unklar)
  For Each wks In Worksheets
if Left(wks.name,2)"D_" then '...
For Each rngC In wks.UsedRange.Cells


Zitat:
so z.B. dürfen nur in Tabellenblättern gesucht werden, welche mit "D_" beginnen.
Dazu dürfen bestimmte Tabellenblätter (z.B. "D_Suche_1") nicht durchsucht werden.

Das widerspricht sich aber!
Bitte genauer angeben.
Gruß Matthias

hier mal konkret ...
09.07.2014 08:41:24
Matthias
Hallo
Als Bsp. hier mal eine Ausgabe der BlattNamen in MsgBox
For Each wks In Worksheets
If Left(wks.Name, 2) = "D_" Then
If Left(wks.Name, 7)  "D_Suche" Then
For Each rngC In wks.UsedRange.Cells
MsgBox wks.Name
Next
End If
End If
Next
Gruß Matthias

Anzeige
noch konkreter
09.07.2014 09:19:27
Rudi
Hallo,
Private Function DasArray()
Dim oCells As Object, wks As Worksheet, rngC As Range
Dim oKey, arrTmp, n As Long
Set oCells = CreateObject("Scripting.dictionary")
For Each wks In Worksheets
If wks.Name Like "D_*" Then 'nur D_* durchsuchen
Select Case wks.Name
Case "D_Suche_1", "D_Suche_2" 'auszuschließende Blätter
'nix passiert
Case Else
For Each rngC In wks.UsedRange.Cells
If rngC  "" Then
Select Case rngC.Column
Case 2, 4, 6, 8, 18: oCells(rngC) = rngC.Value 'Hier können die Spalten  _
eingegeben _
werden, in welchen gesucht werden soll
End Select
End If
Next
End Select
End If
Next
ReDim arrTmp(1 To oCells.Count, 1 To 3)
For Each oKey In oCells
n = n + 1
arrTmp(n, 1) = oKey.Parent.Name
arrTmp(n, 2) = oKey.Address
arrTmp(n, 3) = oCells(oKey)
Next
DasArray = arrTmp
End Function

Gruß
Rudi

Anzeige
AW: noch konkreter
09.07.2014 09:45:20
Pascal
Hallo zusammen !
Eure grossartige Hilfe ist ja ech der Hammer !
VIELEN DANK ! Hat bestens geklappt
Pascal

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige