Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1112to1116
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Klasse von 2003 nach 2007

Klasse von 2003 nach 2007
2003
Hallo Excelianer!
kann vielleicht nachstehenden Code für`s 2007er umschreiben? Es handelt sich hiebei um ToggleButton in einem Sheet.
im Klassenmodul steht:
Public WithEvents TgBtn As MSForms.ToggleButton
Private Sub TgBtn_Change()
If TgBtn.Value = False Then
TgBtn.Caption = "ausblenden"
Call NachtZweiHer
Else
TgBtn.Caption = "einblenden"
Call NachtZweiWeg
End If
End Sub

Private Sub Workbook_Open() enthält :
Dim myOLEObject As OLEObject, myWorksheet As Worksheet, intAnzahl As Integer
For Each myWorksheet In ThisWorkbook.Worksheets
For Each myOLEObject In myWorksheet.OLEObjects
If myOLEObject.progID = "Forms.ToggleButton.1" Then
intAnzahl = intAnzahl + 1
ReDim Preserve MyTgBt(1 To intAnzahl)
Set MyTgBt(intAnzahl).TgBtn = myOLEObject.Object
End If
Next
Danke & Grüße
Lorenz


		

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Klasse von 2003 nach 2007
07.11.2009 19:16:47
2003
Hallo,
da gibt's nichts umzuschreiben. Außer der Instanzierung der Klasse fehlt da nichts.
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private MyTgBt() As clsToggleButton

Private Sub Workbook_Open()
    Dim myOLEObject As OLEObject, myWorksheet As Worksheet, intAnzahl As Integer
    For Each myWorksheet In ThisWorkbook.Worksheets
        For Each myOLEObject In myWorksheet.OLEObjects
            If TypeOf myOLEObject.Object Is MSForms.ToggleButton Then
                intAnzahl = intAnzahl + 1
                Redim Preserve MyTgBt(1 To intAnzahl)
                Set MyTgBt(intAnzahl) = New clsToggleButton
                Set MyTgBt(intAnzahl).TgBtn = myOLEObject.Object
            End If
        Next
    Next
End Sub

' **********************************************************************
' Modul: clsToggleButton Typ: Klassenmodul
' **********************************************************************

Option Explicit

Public WithEvents TgBtn As MSForms.ToggleButton

Private Sub TgBtn_Change()
    If TgBtn.Value = False Then
        TgBtn.Caption = "ausblenden"
        Call NachtZweiHer
    Else
        TgBtn.Caption = "einblenden"
        Call NachtZweiWeg
    End If
End Sub

Gruß
Nepumuk
Anzeige
AW: Klasse von 2003 nach 2007
07.11.2009 19:40:18
2003
Hallo Nepomuk,
was versteht man unter "Instanzierung "
Zuvor hatte genannte Klasse nicht funktioniert. Ich vermute der Grund war folgender: Ich hatte Excel 2007 und Excel 2003 parallel unter Windows 7 laufen. Aufgrund deines Tipps probierte ich es nochmal, siehe da es lief. (Es war nurmehr Excel 2007 aktiv).
Danke u. Grüsse
Lorenz
AW: Klasse von 2003 nach 2007
07.11.2009 20:07:34
2003
Hallo,
damit wird eine Instanz der Klasse erzeugt:
Set MyTgBt(intAnzahl) = New clsToggleButton
Ohne die kann es nicht laufen.
Gruß
Nepumuk
AW: Klasse von 2003 nach 2007
07.11.2009 20:36:34
2003
Hallo Nepumuk!
Hatte Übersehen!
In globalen Modul habe ich die "Instanzieren" wie folgt stehen:
Public MyTgBt() As New clsTgButton
Gruß
Lorenz
Anzeige
AW: Klasse von 2003 nach 2007
07.11.2009 21:07:33
2003
Hallo,
das geht zwar, ist aber nicht ganz sauber programmiert. Wenn du die Instanzen verlierst, kannst du die Klasse nicht neu initialisieren. Da läufst du nämlich beim dimensionieren des Arrays auf einen Fehler.
Gruß
Nepumuk
AW: Klasse von 2003 nach 2007
07.11.2009 21:39:44
2003
Hallo Nepomuk!
Ich werde sebstverständlich ab sofort die "sauberere" Lösung verwenden.
Danke & Grüße
Lorenz

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige