Rahmen versetzen

Bild

Betrifft: Rahmen versetzen von: walter mb
Geschrieben am: 04.02.2005 08:30:48

Guten Morgen Zusammen,
habe folgende Makros, natürlich mit Unterstützung des Forums.
Makro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M17")) Is Nothing Then
    If Range("M17") = "" Then
        'A1_Rahmen_zurück
        A1_Rahmen_Tageszulassung_versetzen
    Else
        A1_Rahmen_Tageszulassung_zurück
        'A1_Rahmen_versetzen
   End If
End If
End Sub

Habe aber auch einen2. Rahmen den ich versetzen möchte, jetzt kommt die
Fehlermeldung: "Mehrdeutiger Name Worksheet_Change",
was ja stimmt.
Wie krige ich das hin das ich einen 2. Rahmen setzen kann etc.
Das 1. Rahmen geschehen läuft einwandfrei ???
Gruß Walter mb
Bild


Betrifft: AW: Rahmen versetzen von: Galenzo
Geschrieben am: 04.02.2005 09:17:14

WorkSheet_Change findest du im Klassenmodul des jeweiligen Tabellenblattes!
DORTHIN gehört der Code.
Also nicht etwa in einem separaten Modul selber schreiben!


Bild


Betrifft: AW: Rahmen versetzen von: walter mb
Geschrieben am: 04.02.2005 09:50:25

Hallo Galenzo,
habe beide im Mappen-Modul, so wie Du meinst.
Gruß Walter


Bild


Betrifft: lies meine AW, Walter!!! -- owT von: Luc
Geschrieben am: 04.02.2005 10:04:16




Bild


Betrifft: hatte diese Kenntnis vorausgesetzt !? -- owT von: Luc
Geschrieben am: 04.02.2005 10:01:47




Bild


Betrifft: AW: Rahmen versetzen von: Luc
Geschrieben am: 04.02.2005 09:38:52

Hallo Walter,
da musst du natürlich natürlich noch ein weiteres normales Makropaar wie das hier gerufene (CALL) Al_Rahmen_Tageszulassung_versetzen/_zurück haben, das den 2.Rahmen steuert. Das Makro, das du hier mitgeschickt hast, ist eine Ereignisprozedur (Eventhandler) für das Ereignis "Arbeitsblatt wird geändert". Und das ist eins nicht 2 oder mehr Ereignisse! Du musst hier halt auch noch das 2.Makropaar aufrufen. Da dieses aber sicher kaum anders aufgebaut sein muss als das erste, kannst du die Behandlung des 2.Rahmens auch in das vorhandene Makropaar (das du nicht mitgeschickt hast!) einbauen. Der Eventhandler selber ist also gar nicht sonderlich relevant, auf das Steuerungsmakro für den Rahmen kommt es eher an - Ausnahme: der im Handler angegebene Range (Target). Den könntest du aber an das Steuerungsmakro als Argument weiterreichen. Im Handler musst du nur noch den Bereich des 2.Rahmens vorsehen:
If Range("M17") = "" Or/And Range("xxx") = "" Then
Wie diese Bedingung genau aussehen muss, musst du selbst entscheiden. Gleiches gilt für deine weitere Vorgehensweise - 2.Makropaar oder Targetübergabe an Steuerungsmakros...
Call A1_Rahmen_Tageszulassung_versetzen(Target)
Call A1_Rahmen_Tageszulassung_zurück(Target)
Da der 2.Rahmen sicher anders heißt, wär's sicher sinnvoll, das Makropaar anders zu benennen. Aber wie gesagt, du kannst auch einfach das Makropaar duplizieren, umbenennen, an 2.Rahmen anpassen und im Handler die If-Verzweigung duplizieren (nochmal dasselbe für das 2.Ziel (Target).
Wenn du dann später mal weiter bist in VBA, wirst du selber sehen wie du das alles eleganter gestalten kannst.
Gruß Luc
PS: Events sind tückisch. Wenn du sowas verwendest, musst du dir die Abläufe gut überlegen (vor allem, wenn du noch andere Handler verwendest). Es können ganze Eventkaskaden ausgelöst wdn, Makros x-mal hintereinandet oder ineinander geschachtelt (immer, wenn ein Ereignis eintritt, wird sofort ein evtl vorhandener Handler gestartet, egal, ob gerade ein anderes Makro abgearbeitet wird) aufgerufen werden etc.


Bild


Betrifft: Anbei ALLE Makros von: walter mb
Geschrieben am: 04.02.2005 10:09:57

Hallo ... (leider hattest Du deinen Namen vergessen),
hier die Makros:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("U39")) Is Nothing Then
    If Range("U39") = "" Then
A1_Rahmen_versetzen
    Else
        A1_Rahmen_zurück
End If
End If
End Sub

Sub A1_Rahmen_versetzen()
'--------- jetzt weiß ---------------------------
Worksheets("Kulanzblatt-VK").Select
Range("A10").Select
Worksheets("Kulanzblatt-VK").Unprotect ("wwpa")
ActiveSheet.Shapes("Text Box 127").Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 9
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Range("I40").Select
End Sub
Sub A1_Rahmen_zurück()
Worksheets("Kulanzblatt-VK").Select
Range("A10").Select
Worksheets("Kulanzblatt-VK").Unprotect ("wwpa")
ActiveSheet.Shapes("Text Box 127").Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 8
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Range("I40").Select
End Sub

'-------- Rahmen für Tageszulassung setzen ------------------------------------
Private Sub Worksheetw_Change(ByVal Target As Range)
If Not Intersect(Target, Range("M17")) Is Nothing Then
    If Range("M17") = "" Then
A1_Rahmen_Tageszulassung_versetzen
    Else
        A1_Rahmen_Tageszulassung_zurück
End If
End If
End Sub

Sub A1_Rahmen_Tageszulassung_versetzen()
'--------- jetzt schwarz --------------------------
Worksheets("Kulanzblatt-VK").Select
Range("M17").Select
Worksheets("Kulanzblatt-VK").Unprotect ("wwpa")
ActiveSheet.Shapes("Text Box 131").Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 8
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Range("M17").Select
Range("M17").Select
End Sub
Sub A1_Rahmen_Tageszulassung_zurück()
'--------- jetzt weiß ---------------------------
Worksheets("Kulanzblatt-VK").Select
Range("M17").Select
Worksheets("Kulanzblatt-VK").Unprotect ("wwpa")
Sub A2_Rahmen_weiß()
ActiveSheet.Shapes("Text Box 131").Select
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Fill.Transparency = 0#
Selection.ShapeRange.Line.Weight = 0.75
Selection.ShapeRange.Line.DashStyle = msoLineSolid
Selection.ShapeRange.Line.Style = msoLineSingle
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.ForeColor.SchemeColor = 9
Selection.ShapeRange.Line.BackColor.RGB = RGB(255, 255, 255)
Range("M17").Select
End Sub
Gruß Walter


Bild


Betrifft: AW: Anbei ALLE Makros von: Galenzo
Geschrieben am: 04.02.2005 10:26:51

Private Sub Worksheetw_Change(ByVal Target As Range) ???!!

Worksheet_Change ist eine Ereignisprozedur und ist wiegesagt im Modul des jeweiligen Tabellenblattes zu finden !!

Also:
Sub A1_Rahmen_Tageszulassung_zurück()
Sub A1_Rahmen_Tageszulassung_versetzen()
in ein "Modul"

und die erste - also EINE (!) WorkSheet_Change im Modul "Tabelle1" - wenn dein Tabelle 1 so heißt. Private Sub Worksheet_Change(ByVal Target As Range)


Bild


Betrifft: AW: Anbei ALLE Makros - Lösung von: Luc
Geschrieben am: 04.02.2005 11:11:18

Der Einfachheit halber... das geht nur so! Und nur da, wo's Galenzo gesagt hat. Nur die gerufenen 4 Makros gehören in das normale Modulblatt. Und dann lies bitte, bitte in der onLineHilfe nach - Ereignisprozedur(en)!!! Wir können keine Verantwortung übernehmen!
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("M17")) Is Nothing Then
     If Range("M17") = "" Then
        A1_Rahmen_Tageszulassung_versetzen
     Else
        A1_Rahmen_Tageszulassung_zurück
     End If
     Exit Sub
  End If
  If Not Intersect(Target, Range("U39")) Is Nothing Then
     If Range("U39") = "" Then
        A1_Rahmen_versetzen
     Else
        A1_Rahmen_zurück
     End If
  End If
End Sub


Gruß Luc

PS: Mein Name stand über dem PS. Deshalb heißt es ja PostScriptum.


Bild


Betrifft: Hatte ja schon... von: walter mb
Geschrieben am: 04.02.2005 11:52:06

Hallo Luc,
wie schon von mir beschrieben, ich habe das genau so duchgeführt bzw.
geändert.
Nochmals herzlichen Dank für die Unterstützung.
Gruß Walter


Bild


Betrifft: Gott, hatt'ich glatt übersehen - ok! - owT von: Luc
Geschrieben am: 04.02.2005 12:36:50




Bild


Betrifft: Danke geklappt !!! von: walter mb
Geschrieben am: 04.02.2005 10:26:33

Hallo Luc,
Danke für deine ausführliche Beschreibung.
Habe angewandt und funktioniert !
Gruß Walter mb


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Rahmen versetzen"