Public Variable Geltungsbereich



Excel-Version: 8.0 (Office 97)
nach unten

Betrifft: Public Variable Geltungsbereich
von: Christoph Dümmen
Geschrieben am: 13.05.2002 - 08:40:27

Hallo,

Im Modul 'Diese Arbeitsmappe' habe ich die Variable OldTarget dimensioniert.

Public OldTarget as Range

Folgender Code hat jedoch bei jeder Ausführung die alte Adresse vergessen und zeigt stattdessen OldTarget = Nothing an.


Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
On Error Resume Next


    If ActiveCell.Row > 6 And Sh.Name <> "ExRate" And Selection.Rows.Count = 1 Then
        If ActiveCell.Row <> OldTarget.Row Or Sh.Name <> OldTarget.Parent.Name Then
            Target.EntireRow.Interior.ColorIndex = 15
            OldTarget.EntireRow.Interior.ColorIndex = -4142
            Set OldTarget = Target
        End If
    End If


Was mache ich falsch?
Christoph

nach oben   nach unten

Re: Public Variable Geltungsbereich
von: MRR
Geschrieben am: 13.05.2002 - 08:47:07

Wo wird denn diese Var. das erste Mal eingesetzt? Wo ist die intialisiert? Wo wirst Du sie noch benötigen? (Evtl. Deklaration in einem Standardmodul)
Matthias

nach oben   nach unten

Re: Public Variable Geltungsbereich
von: Christoph Dümmen
Geschrieben am: 13.05.2002 - 08:57:19

Hallo Matthias,
in folgendem Code benutze ich Sie außerdem. Beim Öffnen des Workbooks wird sie zuerst gefüllt.

Den Test auf die Zelle M2 in den Stammdaten habe ich bei den anderen Codeschnipseln rausgenommen, um den Code nicht unnötig lang in ins Forum zu stellen.


If Worksheets("Stammdaten").Range("M2") = 1 Then                            'Highlight Funktion intitialisieren
    Application.CommandBars("SalesDB").Controls("Highlight ON/OFF").State = msoButtonDown
    If ActiveCell.Row > 6 Then
        ActiveCell.EntireRow.Interior.ColorIndex = -4142
    End If
Else
    Application.CommandBars("SalesDB").Controls("Highlight ON/OFF").State = msoButtonUp
End If


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next

    If ActiveCell.Row > 6 And Sh.Name <> "ExRate" Then                                  'ab Zeile 7 aber nicht Exrates
        Sh.Range(OldTarget.Address).Select                                              'Adresse wie im Blatt zuvor auswählen
        ActiveCell.EntireRow.Interior.ColorIndex = 15                                   'und die ganze Zeile Grau hinterlegen
        Set OldTarget = ActiveCell                                                      'Zelle merken
    End If

Danke
Christoph


nach oben   nach unten

Re: Public Variable Geltungsbereich
von: Michael Scheffler
Geschrieben am: 13.05.2002 - 10:03:53

Hallo Christoph,

in einem Klassenmodul solltest Du keine Publics definieren. Und "Diese Arbeitsmappe" ist ein Klassenmodul. Du kannst das Ganze nur in deinm Standard(!)-Modul vereinbaren.

Micha


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Public Variable Geltungsbereich"