Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Range nach unten Offset erweitern

Range nach unten Offset erweitern
15.03.2017 09:58:00
Steve
Hallo VBA Könner.
Bin seit Tagen am googeln, Forum durchforsten und Unterlagen sowie Tutorials schauen aber finde keine Lösung.Für euch sicher eine Kleinigkeit.
Möchte ein Dienstplantool erstellen. Durch Target-Change-Ereignis wird während der Dienstzeitplanung ständig kontrolliert, ob keine Fehler (Einhaltung der gesetz. vorgeschriebenen Ruhezeit, Mindestens 8 Stunden pro Tag usw.)eingetragen werden.
Diese Kontrolle soll pro Beamter nur in einem Bereich/Zeile stattfinden.
1.Beamter in Zeile 18
2.Beamter in Zeile 26
.....also immer um 8 Zeilen nach unten Offset(8,0)
Die Beamtenanzahl ist aber variabel (zw. 24 und 48).
Dim letzterbeamterzaehlen As Integer
letzterbeamterzaehlen = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row - 24
Public Erstebeamtenzeile As Range, Weiterebeamtenzeile As Range, multibereich1 As Range
Set Erstebeamtenzeile = Range(Cells(18, 4), Cells(18, 36))
Set Weiterebeamtenzeile = Erstebeamtenzeile.Offset(8)
Set multibereich1 = Union (Erstebeamtenzeile, Weiterebeamtenzeile)
Wie muss Weiterebeamtenzeile deklariert werden dass die Berechnung nur in jeder 8 Zeile bei jedem Beamten durchgeführt wird?
Besten Dank für eure Bemühungen.

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range nach unten Offset erweitern
15.03.2017 11:13:05
EtoPHG
Hallo Steve,
Schade, dass Excel einem das Kopfrechnen abnimmt ;-)
Set KontrollBereich = Range(Target.Offset(-(Target.Row - 2) Mod 8), _
Target.Offset(7 - (Target.Row - 2) Mod 8))
Gruess Hansueli
AW: Range nach unten Offset erweitern
15.03.2017 13:11:20
Steve
Hallo Hansueli.
Danke für die schnelle Antwort. Aber es ist aber leider nicht die richtige Lösung.
Vermutlich ist mein Problem so einfach für dich dass du daran gar nicht denkst.:-)
Habe eine kleine Datei erstellt und angehängt um mein Problem zu erörtern.
Die Range rngmulti soll schlussendlich jede 8 Zeile von A:E einschließen.
Also A1:E1, A9:E9, A17:E17, A25:E25, usw. bis zur IntVariable
Danke für deine Mühen.
https://www.herber.de/bbs/user/112203.xlsm
Anzeige
AW: Range nach unten Offset erweitern
15.03.2017 13:46:09
EtoPHG
Hallo Steve,
in dem Fall bin ich draussen, denn ich verstehe überhaupt nicht, was du machen willst.
In der Anfrage bin ich davon ausgegangen, dass bei der Veränderung einer Zelle der KontrollBereich (in der gleichen Spalte) auf 8 Zellen erweitert wird, das er zusammenhängend etc...
Unzusammenhängende Bereiche können max. 30 Einträge umfassen, darum kann das nicht mit usw. bis Unendlich abgetan werden. Zudem sehe ich an deinen Codes, dass du mit .Select arbeitest. Dieser Befehl ist zu 99.9% in VBA kontraproduktiv und überflüssig.
Fazit: Ich habe die Kontrolle verloren... Es darf sich gerne jemand anders versuchen...
Gruess Hansueli
Anzeige
AW: Range nach unten Offset erweitern
15.03.2017 14:05:26
Steve
Hallo Hansueli.
Ich habe die kleine Datei nur extra für dich erstellt - und die Bereiche dann selectiert - damit mein Problem ganz einfach ersichtlich ist.
Den Kontrollbereich will ich ja erst definieren.
Für jeden Beamten stehen 8 Zeilen zur Verfügung und immer in der ersten Zeile sollen meine Berechnungen zugelassen werden.
Beim ersten Beamten funktioniert es ja bestens........und beim zweiten ja auch... weil ich die zweite Range einfach mit Offset (8,0) definiert habe und eine Union - mit erster Zeile des ersten Beamten und erster Zeile des zweiten Beamten erstellt habe.
Ich muss aber noch den dritten, vierten, fünften, usw. bis ca. (48) Beamten mit seiner jeweiligen ersten Zeile in die Union hineinbringen.
https://www.herber.de/bbs/user/112205.xlsm
Bitte schau dir nochmal die Datei an.
Danke und in Erwartung deiner pos. Antwort.
lg
Anzeige
AW: Range nach unten Offset erweitern
17.03.2017 07:50:09
Steve
Hallo an alle.
Ua. Problem habe ich mit definierten - automatisch generierten - Bereichsnamen gelöst.
Dim intAuszaehlung As Integer
For intAuszaehlung = 5 To Cells(Rows.Count, 1).End(xlUp).Row Step 5
Cells(intAuszaehlung, 1).Offset(-2, 1).Resize(, 5).Interior.ColorIndex = 3
With Selection 'Generiere aufgr. der eingetr. Mitarbeiter einen def. Namensbereich
.Name = "RZ_von_" & Cells(intAuszaehlung, 1).Value
End With
Next intAuszaehlung
Diese Namen kann ich auch auslesen:
Dim DefinierteBereichsNamen As Names, StrTmp As String, i As Integer
Set DefinierteBereichsNamen = ActiveWorkbook.Names
'liest alle darüber generierten def. Namenbereiche aus
For i = 1 To DefinierteBereichsNamen.Count
StrTmp = StrTmp & DefinierteBereichsNamen(i).Name & DefinierteBereichsNamen(i).RefersTo
Next
MsgBox StrTmp
Jetzt stehe ich vor dem Problem wie ich diese ausgelesenen Namen automatisch in eine Range-Union zusammenfassen (da es aber schlussendlich ca. 50 Bereiche sind und anscheinend nur 30 in eine Union passen wird es noch komplizierter) lassen kann:
Dim rngmulti As Range 'wie kommen die Definierten BereichsNamen in die Union?
Set rngmulti = Application.Union(Range(" ...?...."), Range("....?...."), Range("...?...."))
Anbei eine Datei- aber nur mit 4 Mitarbeitern.
https://www.herber.de/bbs/user/112236.xlsm
Besten Dank
Steve
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige