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

Variabel als Range

Variabel als Range
19.08.2022 14:51:26
krug96
Hallo,
vielleicht kann mir hier jemand weiterhelfen. Aktuell ist das andere Forum, in welchem ich mich als aufhalte, nicht erreichbar. Dort hatte ich schon wegen dem Problem mal nachgefragt.
Ich habe eine mappe1.xlsm in der in Tabelle1 Daten stehen.
Aus diesen Daten ordne ich einen Bereich der Dim "wert" zu.

Dim wert As Range
Set wert = Worksheets("Tabelle1").Range("C2:C18")
Im nächsten Schritt möchte ich die Daten von mappe1.xlsm aus "Tabelle1" in einer Datei "Daten.xlsx" und dort in der Tabelle1 auslagern. So kann ich die Inhalte aus Daten.xlsx jederzeit erweitern / abändern
Nach dem Starten einer UserForm wird der Inhalt von Tabelle1 aus Daten.xlsx mit allen belegten Zellen (die Anzahl der Spalten und die Anzahl der Zeilen können sich ändern) in ein Array "arr" jedes Mal auf's neue manuell geladen.
Nun soll die Dim "wert" vom Typ Range mit einem Teil der Daten aus dem Array "arr" befüllt werden.
Set wert = Range(arr3,arr2:arr3,arr18)
Geht das?
Wie könnte ich sonst einen Bereich aus einem Array einer DIm vom Typ Range zuordnen?
Vielen Dank für eure Antworten
Gruß

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variabel als Range
19.08.2022 16:45:25
GerdL
Hallo Krug96,
nein. So nicht.
Ein Range ist ein Objekt, eine Array ist ein Datenfeld.
Du kannst die Werte eines Array in einen (passgenauen) Range einfügen
oder ein paar einzelne Werte aus einem Array in einen in der Größe angepassten Range einfügen.
Weshalb schreibst du von Array "arr", möchtest dann aber "arr3,arr2:arr3,arr18" verarbeiten?
Wie deklarierst u. füllst du das Array?
Gruß Gerd
AW: Variabel als Range
14.09.2022 11:04:02
Grenzheuser
Hallo GerdL,
da ich noch ne andere Baustelle hatte, kann ich mich erst jetzt wieder melden. Es geht um den folgenden Befehl:

Application.NetworkDays(StartDatum, Enddatum, Feiertage)
Wenn ich für den Wert "Feiertage" direkt auf einen Bereich in der Tabelle zugreife, dann funktioniert "NetworkDays"

Dim Feiertage As Range
Set Feiertage = Worksheets("Tabelle1").Range("C2:C18")
Wie muss ich "Feiertage" an NetworkDays übergeben, wenn ich die Feiertage aus der Tabelle in ein Arr eingelesen habe?
Hier die Dateien dazu:
https://www.herber.de/bbs/user/155167.xlsx - Feiertage, die als externe Datei in ein Array eingeladen werden
https://www.herber.de/bbs/user/155169.xlsm - Userform und Feiertage in Tabelle1
Vielen Dank.
Gruß Michael
Anzeige
AW: Variabel als Range
14.09.2022 15:06:33
GerdL
Hallo Michael,
zum Thema Baustelle,
wer anderen eine Grube gräbt, ist Bauarbeiter. :-)
Deine Dateien führe ich mir nicht zu Gemüte.

 Unit()
MsgBox WorksheetFunction.NetworkDays(DateSerial(2022, 1, 1), DateSerial(2022, 12, 31))
Dim Kerwe As Variant
Kerwe = Array(CLng(DateSerial(2022, 9, 13)), CLng(DateSerial(2022, 9, 14)))
MsgBox WorksheetFunction.NetworkDays(DateSerial(2022, 1, 1), DateSerial(2022, 12, 31), Kerwe)
Dim Y(0 To 2) As Long
Y(0) = DateSerial(2022, 9, 13)
Y(1) = DateSerial(2022, 9, 14)
Y(2) = DateSerial(2022, 8, 15)
MsgBox WorksheetFunction.NetworkDays(DateSerial(2022, 1, 1), DateSerial(2022, 12, 31), Y)
Dim FT As Variant
FT = Tabelle1.Range("B2:B16").Value 'dort Zahlenformat, kein Datumsformat!
MsgBox WorksheetFunction.NetworkDays(DateSerial(2022, 1, 1), DateSerial(2022, 12, 31), FT)
End Sub
Gruß Gerd
Anzeige
AW: Variabel als Range
15.09.2022 11:24:25
Grenzheuser
Hallo Gerd,
vielen Dank für die Ausarbeitung diverser Möglichkeiten.
Der letzte Vorschlag ist der, mit dem ich es aktuell versuche. Leider liegen in der externen Datei die Werte im Datumsformat vor. Eingelesen werden die wie folgt:

Dim arrFeiertageCB  as Variant
StartDatum = CDate(Me.TextBox1.Value)
Enddatum = CDate(Me.TextBox2.Value)
objExcel.Workbooks.Open "c:\excel\feiertage.xlsx" , ReadOnly:=True
Set objSheet = objExcel.Sheets("Tabelle1")
With objSheet
leZeile = .Cells(.Rows.Count, 3).End(xlUp).Row
arrFeiertageCB = .Range(.Cells(2, 3), .Cells(leZeile, 3)).Value                 'Werte stehen in Spalte 3
End With
MsgBox arrFeiertageCB(13, 1)             'hier steht z.B. das Datum 25.12.2022
Me.TextBox5.Value = Application.NetworkDays(StartDatum, Enddatum, arrFeiertageCB)
Hier kommt der folgende Fehler: Eigenschaft Value konnte nicht gesetzt werden. Typenkonflikt
Bei FT: mit "DateSerial" wird bei Startdatum und Enddatum eine Datum generiert und FT selber sind Zahlen
Wenn ich das so mache und alles als Datum definiert ist, geht das aber

StartDatum = CDate(Me.TextBox1.Value)
Enddatum = CDate(Me.TextBox2.Value)
Set rngHolidays = Worksheets("Tabelle1").Range("C2:C18").Value
Me.TextBox4.Value = Application.NetworkDays(StartDatum, Enddatum, rngHolidays)
Mist, irgendwie habe ich da gerade eine Denkblokade.
Wie muss ich die Daten in arrFeiertageCB einlesen, dass die bei "NetworkDays" keinen Typenkonflikt erzeugen?
Vielen Dank.
Gruß Michael
Anzeige
AW: Variabel als Range
15.09.2022 11:43:36
GerdL
Hallo Michael,
guck mal, ob du umwandeln kannst.
'.................

With ObjSheet
leZeile = .Cells(.Rows.Count, 3).End(xlUp).Row
arrFeiertageCB = .Range(.Cells(2, 3), .Cells(leZeile, 3)).Value                 'Werte stehen in Spalte 3
End With
For Z = LBound(arrFeiertageCB) To UBound(arrFeiertageCB)
arrFeiertageCB(Z, 1) = CLng(arrFeiertageCB(Z, 1))
Next
MsgBox arrFeiertageCB(13, 1)             'hier steht z.B. das Datum 25.12.2022 oder jetzt?
'.................
AW: Variabel als Range
16.09.2022 09:54:47
Grenzheuser
Hallo Gerd,
das hat geklappt. Vielen Dank.
Dann kann ich diese Baustelle schließen.
Viele Grüße und ein schönes Wochenende.
Michael
Anzeige
AW: Variabel als Range
15.09.2022 11:43:09
Grenzheuser
Hallo Gerd,
ich habe in die externe Datei eine weitere Spalte eingefügt, die das Datum kopiert aber dann als Zahl darstellt.
Wenn ich nun diese Spalte in FT einlese, dann klappt "NetworkDays"
Es liegt also nur daran, wie die Daten in FT eingelesen werden.
Gruß Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige