Thema Datum  Von Nutzer Rating
Antwort
Rot Buttons mit verschiedenen Funktionalitäten programieren
01.10.2019 19:11:35 vgoh
NotSolved
01.10.2019 19:31:34 Mase
NotSolved
01.10.2019 19:49:38 Gast40937
NotSolved
01.10.2019 20:22:32 Mase
NotSolved
01.10.2019 20:25:42 Mase
NotSolved

Ansicht des Beitrags:
Von:
vgoh
Datum:
01.10.2019 19:11:35
Views:
1078
Rating: Antwort:
  Ja
Thema:
Buttons mit verschiedenen Funktionalitäten programieren

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:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim endSpalte As Integer
    'MsgBox " Zeile: " & Target.Row & " Spalte:" & Target.Column & " Ende: " & Target.End(xlToLeft).Column & " Count: " & Target.Count
    If Target.Column > 3 And Target.Row > 5 Then
        endSpalte = Target.Column + (Target.Count - 1)
        'MsgBox endSpalte
        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

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:

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
    
    'Dynamischer Array mit Ranges
    
    gesuchterOrt = Range("B1").Value
    von = Range("B2").Value
    bis = Range("B3").Value
    
    'Ort suchen:
    
    'Set rngErgebnis = Columns(1).Find(what:=gesuchterOrt) ' ODER
    Set rngErgebnis = Range("A06:C66").Find(what:=gesuchterOrt, LookIn:=xlValues, LookAt:=xlWhole)
    
    If Not rngErgebnis Is Nothing Then
    
        'Zeilen des Ortes ermitteln
        zeile = rngErgebnis.Row
        
        'von-Spalte ermitteln
        vonCol = spalte(von)
        
        'bis-Spalte ermitteln
        bisCol = spalte(bis)
        
        'Teilbereich färben
        Range(Cells(zeile, vonCol), Cells(zeile, bisCol)).Interior.Color = vbYellow
    End If
End Sub


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!


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Buttons mit verschiedenen Funktionalitäten programieren
01.10.2019 19:11:35 vgoh
NotSolved
01.10.2019 19:31:34 Mase
NotSolved
01.10.2019 19:49:38 Gast40937
NotSolved
01.10.2019 20:22:32 Mase
NotSolved
01.10.2019 20:25:42 Mase
NotSolved