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 arr2Jemand 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, 18:06
(Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2019, 18: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, 21:56
(Dieser Beitrag wurde zuletzt bearbeitet: 07.12.2019, 21: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, 21: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, 11:16
(Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2019, 11: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, 11: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
|