Hallo Leute! Ich versuche es eine Plantaffel in Excel zu bauen. Dabei benutze ich für die Programmierung der Funktionalitäten VBA.
In meiner Tabelle habe ich einen Hauptbereich (z.B.: D6 bis HZ66) . Wenn ich einen beliebigen Teilbereich innerhalb diesem Hauptbereich markiere, sollen dann drei Felder mit Informationen gefüllt werden (in meinem Beispiel: B1 (Ort), B2 (Datum von) und B3 (Datum bis)).
Mit einem Button BUCHEN sollen dann diese Informationen (von Feldern B1, B2 und B3) ausgewertet werden und wenn alles passt, soll dieser Bereich gefärbt werden.
Mit der Funktion Worksheet_SelectionChange(..) habe ich hinbekommen die Werte für die Felder B1, B2 und B3 zu ermitteln.
Mein Problem Nr. 1:
So wie ich jetzt habe, ist es möglich mehrere Zeilen zu markieren und das möchte ich nicht. Jede Zeile entspricht einem Ort, also wenn ich zwei oder mehrere Zeilen markiere, würde ich damit auch mehrere Orte auswählen. Das Ergebnis wäre dann verfälscht
Wie kann ich es so einschrenken, dass ich im Hauptbereich mehrere Teilbereiche pro Zeile markiere?
Hier mein Code:
1 2 3 4 5 6 7 8 9 10 11 12 | <strong> Private Sub Worksheet_SelectionChange( ByVal Target As Range)
Dim endSpalte As Integer
If Target.Column > 3 And Target.Row > 5 Then
endSpalte = Target.Column + (Target.Count - 1)
</strong>
<strong> Range( "B1" ).Value = Cells(Target.Row, 1).Value
Range( "B2" ).Value = Cells(4, Target.Column).Value
Range( "B3" ).Value = Cells(4, endSpalte).Value
End If
End Sub </strong>
|
Mein Problem Nr. 2:
Mit der Funktion findeUndFaerbe() werte ich die Felder B1, B2 und B3 aus und der markierten Bereich wird dann gefärbt. Das läuft gut. Ich möchte, dass dieser Button auch funktioniert, wenn ich die Eingaben Ort, von und bis manuell eingebe (ohne den Hauptarbeitsfeld zu benutzen, also, indem ich Ort, Datum von und Datum bis direkt in B1, B2 und B3 eintippe), das geht aber noch nicht.
Hat Jemand eine Idee, wie ich das verwirklichen könnte?
Hie mein Code für den Button BUCHEN:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | <strong> Sub findeUndFaerbe()
Dim rngErgebnis As Range
Dim zeile As Integer
Dim vonCol As Integer
Dim bisCol As Integer
Dim gesuchterOrt As String
Dim von As Date
Dim bis As Date
Dim buchenBtn As CommandBarButton
Dim reservierenBtn As CommandBarButton
Dim clearBtn As CommandBarButton
</strong>
<strong>
gesuchterOrt = Range( "B1" ).Value
von = Range( "B2" ).Value
bis = Range( "B3" ).Value
</strong>
<strong>
</strong>
<strong> Set rngErgebnis = Range( "A06:C66" ).Find(what:=gesuchterOrt, LookIn:=xlValues, LookAt:=xlWhole)
If Not rngErgebnis Is Nothing Then
</strong>
<strong> zeile = rngErgebnis.Row
</strong>
<strong> vonCol = spalte(von)
</strong>
<strong> bisCol = spalte(bis)
</strong>
<strong> Range(Cells(zeile, vonCol), Cells(zeile, bisCol)).Interior.Color = vbYellow
End If
End Sub
</strong>
|
Problem Nr. 3:
Später möchte ich die Tabelle etwas intelligenter machen. Also, pro Ort (also, pro Zeile) darf man verschiedene Teilbereiche markieren (z.B. Konstanz von 12.3 bis 24.03, von 2.4 bis 18.04, usw.). Ich denke, ich müsste dafür in einer Liste mit Ort als Key, bei jeder Buchung, diese Infos speichern. Dann kann man auch sicher stellen, dass keinen Bereich gebucht wird, der schon gefärbt (gebucht) wurde.
Hat Jemand dazu eine Idee? Denn, bei jedem Start dieser Plantafel, mussten diese Informationen wieder aufgeladen werden. Speichert man die dann in einer Datei? Hat Jemand eine Idee, wie ich es vorgehen kann?
Ich bedanke mich für jede Hilfe, auch wenn es nur für die Lösung eines Problems wäre!
Schönen Abend!
|