Registriert seit: 24.11.2017
Version(en): 2016
Hallo zusammen,
folgendes Szenario; Verwendung in einer IF-Abfrage:
Code: arr = Array("test1", "test2", "test3")
arr2 =Array("testdatei_1.xls", "testdatei_2.xls","testdatei_3.xls")
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
If Zelle = arr Then
MsgBox arr2
End If
Next
Natürlich funktioniert die nachfolgende Zeile so nicht. Ich möchte, dass er prüft, ob in Zelle ein Begriff aus arr vorkommt und wenn ja, er dann den dazugehörigen Wert aus arr2 auswirft:
If Zelle = arr Then
MsgBox arr2
Jemand eine Idee?
Gruss
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
falls sich in dem Bereich keine leeren Zellen befinden
Code: Sub prcJules()
Dim arr As Variant, arr2 As Variant
Dim Bereich As Range, Zelle As Range
arr = Array("test1", "test2", "test3")
arr2 = Array("testdatei_1.xls", "testdatei_2.xls", "testdatei_3.xls")
With ActiveSheet
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
' If Zelle = arr Then
If IsNumeric(WorksheetFunction.Match(Zelle.Value, arr, 0)) Then
MsgBox arr2(WorksheetFunction.Match(Zelle.Value, arr, 0) - 1)
End If
Next
End With
End Sub
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 24.11.2017
Version(en): 2016
07.12.2019, 17:06
(Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2019, 17:06 von jules.)
Servus,
klingt super!
Werde es gleich mall testen..
Danke!
- Kann ich die Werte für den Array auch aus einer Liste (Range) auslesen.. ?
Registriert seit: 24.11.2017
Version(en): 2016
Hi nochmal,
es funktioniert wenn ich es auf einem Blatt nutze, allerdings nicht, wenn ich es wie in meiner Mappe für mehrere Blätter anwenden will:
Code: For Each wks In Worksheets
Select Case wks.Name
Case "Inhalt", "Data", "Suppliers", "Budget", "Jan", "Feb", "March", "April", "June", "July", "August", "Sept", "Oct", "Nov", "Dec", "Preise"
Case Else
With wks
Blatt = .Range("B1")
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
Zellen = Range(Cells(4, Zelle.Column), Cells(21, Zelle.Column)).Address
If IsNumeric(WorksheetFunction.Match(Zelle.Value, arr, 0)) Then
Dateiname = arr2(WorksheetFunction.Match(Zelle.Value, arr, 0) - 1)
MsgBox Dateiname
Woran liegt's ?
Merci und LG
Registriert seit: 24.11.2017
Version(en): 2016
07.12.2019, 20:56
(Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2019, 20:57 von jules.)
** MEIN FEHLER **
.. Anscheinend muss ich bei "Case" E X A K T den Tabellennamen angeben. Also auch Groß-/Klein Schreibung etc.
Funktioniert nun ... *nerv
Danke!!
--
Kann man vielleicht im Select Case die xlSheetHidden & veryHidden auswählen, anstatt jedes Blatt einzelnd aufzulisten?
For Each wks In Worksheets
Select Case wks.Name
Case "Hidden"
wks.Visible = xlSheetHidden
wks.Visible = xlSheetVeryHidden
Case Else
..
funktioniert so wohl nicht...
nur wenn ich es wirklich einzelnd aufliste:
Case "Inhaltsverzeichnis", "Data", "Suppliers", "BUDGET", "JAN ALL", "FEB ALL", "MARCH ALL", "APRIL ALL", "MAY ALL", "JUNE ALL", "JULY ALL", "AUG ALL", _
"SEPT ALL", "OCT ALL", "NOV ALL", "DEC ALL", "Preise", ....
Vielleicht hat dazu noch jemand eine Idee?
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
(07.12.2019, 20:56)jules schrieb: Kann man vielleicht im Select Case die xlSheetHidden & veryHidden auswählen, anstatt jedes Blatt einzelnd aufzulisten?
For Each wks In Worksheets
Select Case wks.Name
Case "Hidden"
wks.Visible = xlSheetHidden
wks.Visible = xlSheetVeryHidden
Case Else
was bezweckst Du damit?
Gruß Stefan
Win 10 / Office 2016
Registriert seit: 24.11.2017
Version(en): 2016
Ich lasse alle Blätter durch eine Schleife laufen.
For Each wks In Worksheets
Select Case wks.Name
und möchte aber Blätter die Hidden oder veryHidden sind, sowie 2-3 weitere Blätter davon ausschließen.
Aktuell wie folgt gelöst:
Code: For Each wks In Worksheets
Select Case wks.Name
Case "Inhaltsverzeichnis", "Data", "Suppliers", "BUDGET", "JAN ALL", "FEB ALL", "MARCH ALL", "APRIL ALL", "MAY ALL", "JUNE ALL", "JULY ALL", "AUG ALL", _
"SEPT ALL", "OCT ALL", "NOV ALL", "DEC ALL", "Preise", "
Case Else
With wks
Blatt = .Range("B1")
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
(die Liste ist eigentlich noch etwas länger. Daher wäre es einfacher alle versteckten Blätter auf einen Schlag schonmal auszuschließen..
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo, For Each wks In Worksheets
If wks.Visible = xlVisible Then
Select Case UCase(wks.Name)
Case "Inhaltsverzeichnis", "Data", "Suppliers", "BUDGET", "JAN ALL", "FEB ALL", "MARCH ALL", "APRIL ALL", "MAY ALL", "JUNE ALL", "JULY ALL", "AUG ALL", _
"SEPT ALL", "OCT ALL", "NOV ALL", "DEC ALL", "Preise", ""
Case Else
With wks
Blatt = .Range("B1")
Set Bereich = .Range("C2:N2")
For Each Zelle In BereichTabelle1.Visible
Gruß Uwe
Registriert seit: 24.11.2017
Version(en): 2016
08.12.2019, 10:16
(Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019, 10:25 von jules.)
Moin Uwe,
also es funktioniert bei mir nicht richtig. Er ignoriert zwar so die hidden und veryhidden sheets, jedoch nicht "inhaltsverzeichnis" und "data" (beide auch visible)
Code: For Each wks In Worksheets
If wks.Visible = xlSheetVisible Then
Select Case UCase(wks.Name)
Case "Inhaltsverzeichnis", "Data"
Case Else
With wks
Blatt = .Range("B1")
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
Case "Inhaltsverzeichnis", "Data" wird also nicht ignoriert...
Es liegt denke ich am Ucase() ...
Deine Zeile: For Each Zelle In BereichTabelle1.Visible
Funktioniert nur ohne .visible (Tabelle1 habe ich nicht verstanden..)
Ansonsten prima!!
Zu guter Letzt ein ganz merkwürdiges Geschehen:
Code: Dim arr As Variant
Dim arr2 As Variant
arr = Worksheets("Data").Range("G8:G13")
arr2 = Worksheets("Data").Range("H8:H13")
arr klappt. bei arr2 funktioniert es nur, wenn ich den Array im Makro selbst definiere
arr2 = Array("Verbrauchsstatistik L1 2020.xlsb","Verbrauchsstatistik L2 2020.xlsb", "Verbrauchsstatistik L3 2020.xlsb")
In der Range (H8:H13) stehen aber genauso:
H8: Verbrauchsstatistik L1 2020.xlsb
H9: Verbrauchsstatistik L2 2020.xlsb
etc.
hä?
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
(08.12.2019, 10:16)jules schrieb: also es funktioniert bei mir nicht richtig. Er ignoriert zwar so die hidden und veryhidden sheets, jedoch nicht "inhaltsverzeichnis" und "data" (beide auch visible)
Code: For Each wks In Worksheets
If wks.Visible = xlSheetVisible Then
Select Case UCase(wks.Name)
Case "Inhaltsverzeichnis", "Data"
Case Else
With wks
Blatt = .Range("B1")
Set Bereich = .Range("C2:N2")
For Each Zelle In Bereich
Case "Inhaltsverzeichnis", "Data" wird also nicht ignoriert...
Es liegt denke ich am Ucase() ...
Nein, am UCase liegt es nicht. Data und Inhaltsverzeichnis liegen im separaten Case-Zweig und nicht im Case Else-Zweig. Schau dir doch das Ganze mal im Einzelschrittmodus an.
Gruß Stefan
Win 10 / Office 2016
|