Linie in EXCEL per Makro setzen/verschieben

Dieses Thema Linie in EXCEL per Makro setzen/verschieben im Forum "Microsoft Office Suite" wurde erstellt von stp-prs, 24. Apr. 2006.

Thema: Linie in EXCEL per Makro setzen/verschieben Hallo, für eine Terminplanung in EXCEL 2000 wird in eine bestimmte Zelle die gewünschte Kalenderwoche eingetragen...

  1. Hallo,

    für eine Terminplanung in EXCEL 2000 wird in eine bestimmte Zelle die gewünschte Kalenderwoche eingetragen z.B. 16. In Abhängigkeit zu dieser Eintragung soll eine senkrechte Linie von Zeile 20 bis Zeile 100 (Beispielwerte) in die der Kalenderwoche entsprechende Spalte verschoben oder die alte Linie gelöscht und neu erstellt werden. Geht sowas?

    Gruß
    Wilfried
     
  2. Hallo Wilfried,

    prinzipiell geht das.

    - Sind auf der Seite sonst keine Linien vorhanden ?
    - Wird die Zeile mit der Kalenderwoche von links nach rechts nach und nach ausgefüllt?
    - Soll dann in der Spalte der am weitesten rechts stehenden Kalenderwoche von Zeile 20 bis 100 auf der rechten Seite eine dickere Linie gesetzt werden?

    Gruß Matjes :)
     
  3. Hallo Matjes,

    danke für deine Anrwort.

    - Es sind sonst keine Linien vorhanden
    - Es ist nir eine Zelle mit der Kalenderwoche
    - Es soll nur in einer Spalte (der der gewünschten Kalenderwoche) eine Linie sein

    Gruß
    Wilfried
     
  4. Hallo Wilfried,

    dann probier mal das folgende Makro:
    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
     ->Kalenderwoche in C5
      Const Z_KW = 5
      Const SP_KW = 3
     ->Strich ab Zeile / bis Zeile
      Const Z_STRICH_AB = 20
      Const Z_STRICH_BIS = 100
      
      Dim s_KW As String, l_sp As Long, c As Long, r As Range, Zelle As Range
      
     ->Alle geänderten Zellen
      For Each Zelle In Target
       ->Änderung in KW-Zelle ?
        If Zelle.Row = Z_KW And Zelle.Column = SP_KW Then
         ->Zahl aus KW-Zelle holen
          s_KW = Cells(Z_KW, SP_KW).Value
         ->Zahl umwandeln / prüfen
          If s_KW <>  Then
            On Error Resume Next
            l_sp = CLng(s_KW)
            If Err.Number = 0 Then
              On Error GoTo 0
              If l_sp >= 1 And l_sp <= 53 Then
               ->prüfen, ob Strich scon gesetzt ist
                Set r = Range(Cells(Z_STRICH_AB, l_sp), Cells(Z_STRICH_BIS, l_sp))
                If r.Borders(xlEdgeRight).LineStyle = xlNone Then
                 ->fetten Strich setzen
                  With r.Borders(xlEdgeRight)
                    .LineStyle = xlContinuous
                    .Weight = xlThick
                    .ColorIndex = xlAutomatic
                  End With
                 ->alte Striche löschen
                  For c = 1 To UsedRange.Column + UsedRange.Columns.Count - 1
                    If c <> l_sp Then
                      Set r = Range(Cells(Z_STRICH_AB, c), Cells(Z_STRICH_BIS, c))
                      r.Borders(xlEdgeRight).LineStyle = xlNone
                    End If
                  Next
                End If
              Else
                MsgBox _
                  Kalenderwoche außerhalb zulässigem Bereich. & vbLf & _
                  1 <= KW <= 53
              End If
            Else
              Err.Clear
              On Error Resume Next
              MsgBox Die Angabe der Kalenderwoche kann nicht in eine Zahl umgewandelt werden.
            End If
          End If
        End If
      Next
    AUFRAEUMEN:
      Set Zelle = Nothing: Set r = Nothing
    End Sub
    Die Konstanten Z_KW und SP_KW mußt du deinen Gegebenheiten anpassen.
    Z_KW auf Zeile der Zelle Kalenderwoche setzen
    SP_KW auf Spaltennummer der Zelle Kalenderwoche setzen.

    Das Makro muß in der Codeseite des entsprechenden Tabellenblattes liegen.
    Wie kommt man da hin ?

    Ganz einfach  ;) Die Blattlasche mit der rechten Maustaste anklicken und im Kontextmenü->Code anzeigen' wählen. Das sich öffnende Fenster ist die Codeseite des Tabellenblattes. Dort kopierst du per Copy & Paste den Makro hinein. Mit Alt+Q schließt du den VB-Editor. Dann ausprobieren und wenn's klappt speichern nicht vergessen.

    Gruß Matjes :)
     
  5. Hallo Matjes,

    vielen Dank für deine Mühe! Da steckt bestimmt viel Arbeit drin. Ich werde das gleich mal ausprobieren.
    Den Tipp mit der Codeseite kannte ich auch noch nicht.

    Gruß
    Wilfried
     
  6. Hallo Matjes,

    habe mal das Makro auf die Codeseite kopiert und die Werte angepasst. Aber das Makro braucht beim Aufruf den Parameter Target. Wie funktioniert das?

    Gruß
    Wilfried
     
  7. Hallo stp-prs,

    das ist das Standard-Ereignis Change für in einem Tabellenblatt.
    Code:
    Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    
    .....
    
    End Sub
    Target wird von Excel automatisch versorgt und enthält den Bereich der Änderung.

    Funktioniert es denn ?

    Gruß Matjes :)
     
  8. Hallo Matjes,

    funktioniert!! Nur die Linienart kann ich nicht ändern. Ich schreibe:

    .............
    With r.Borders(xlEdgeRight)
    .LineStyle = xlDash
    .Weight = xlThick
    .ColorIndex = xlAutomatic
    ...........

    habe aber immer noch eine durchgehende Linie.

    Gruß
    Wilfried
     
  9. Der dicke Strich überzeichnet die Lücken.

    Ändere mal die Strichdicke:
    Code:
     .Weight = xlThick
    in
    Code:
     .Weight = xlMedium
    Gruß Matjes :)
     
  10. Hallo Matjes,

    ich bin untröstlich, aber der Benutzer für den ich das machen soll hat etwas wichtiges vergessen mir zu sagen:
    Der Wert der KW wird errechnet aus einer anderen Zelle mit dem Wert HEUTE und zwar mit der KALENDERWOCHEN-Funktion. Es muss also nicht das Worksheet_change Ereignis, sondern ein Auto_open Makro sein?

    Gruß
    Wilfried

    Edit:
    Hab's hinbekommen, nochmals vielen Dank!
     
Die Seite wird geladen...

Linie in EXCEL per Makro setzen/verschieben - Ähnliche Themen

Forum Datum
Excel Linien farbig unterlegen Windows XP Forum 15. Sep. 2008
Gitternetzlinien in einzelnen Excel-Reihen ausblenden!??? Microsoft Office Suite 22. Okt. 2007
Excel. Trendlinie bei Unstetigkeit Windows XP Forum 4. Okt. 2006
Excel Makro Sekundärachse als Liniendiagramm Microsoft Office Suite 9. Nov. 2005
Excel: 2 Säulen + 1 Linie in einem einzigen Diagramm? Microsoft Office Suite 8. Nov. 2005