Office: (Office 2003) Objektverweis übergeben

Helfe beim Thema Objektverweis übergeben in Microsoft Word Hilfe um das Problem gemeinsam zu lösen; Hallo Gemeinde, meine Frage bezieht sich auf die VBA-Umgebung von Word 2003 (Office 11). Ist es möglich einer Variable einen Verweis auf eine... Dieses Thema im Forum "Microsoft Word Hilfe" wurde erstellt von Metti, 30. März 2016.

  1. Metti Neuer User

    Objektverweis übergeben


    Hallo Gemeinde,

    meine Frage bezieht sich auf die VBA-Umgebung von Word 2003 (Office 11).
    Ist es möglich einer Variable einen Verweis auf eine Objekteigenschaft zuzuweisen, welche später weiterverarbeitet werden kann ?
    Beispiel:

    Code:
    
    	Set Verweis = ListBox1.BackColor	' LB1_Bcol soll natürlich nicht den Farbwert aufnehmen, sondern den Verweis !
                 .
                 .
    	Verweis = &H80000005&			' und hier dann später die Hintergrundfarbe ändern
                 .
                 .
    Folgender Hintergrund:

    Ich möchte einer Sub Verweise verschiedener Objekte (wie oben beschrieben) übergeben.
    Unten soll zum Beispiel ein ListBox1.BackColor -Verweis übergeben werden, welcher in der Private Sub Blinken() übernommen wird, um die Hintergrundfarbe der ListBox1 3x zum Blinken zu bringen.

    Code:
                      [COLOR="#6699ff"][B]
    Private Sub [/B][/COLOR]X()                                                                 ' (Voraussetzung eine UserForm mit einer Listbox1)
    
    	Const rot = &HFF&
    	Set [COLOR="#FF0000"][B]Verweis[/B][/COLOR] = ListBox1.BackColor                                        ' den Verweis setzen
    	Call Blinken( 0.05, [COLOR="#FF0000"][B]Verweis[/B][/COLOR][COLOR="#009966"][B](=ListBox1.BackColor)[/B][/COLOR], rot, 3)               ' hier müsste der Verweis übergeben werden
    	[COLOR="#6699ff"][B]Set[/B][/COLOR] Verweis = [COLOR="#6699ff"][B]Nothing[/B][/COLOR]
                   [COLOR="#6699ff"][B]
    End Sub   [/B][/COLOR]
    
                     [COLOR="#6699ff"][B]
    Private Sub [/B][/COLOR]Blinken(Pause_Sekunden [COLOR="#6699ff"][B]As Single[/B][/COLOR], [COLOR="#FF0000"][B]Objekt_[/B][/COLOR][COLOR="#009966"][B](=ListBox1.BackColor)[/B][/COLOR], BlinkCol [COLOR="#6699ff"][B]As Long[/B][/COLOR], AnzBlinks [COLOR="#6699ff"][B]As Byte[/B][/COLOR])     ' und hier dann übernommen
    
                oriColor = [COLOR="#FF0000"][B]Objekt_[/B][/COLOR][COLOR="#009966"][B](=ListBox1.BackColor)[/B][/COLOR]           ' Originalfarbe des Objekts merken
                [COLOR="#6699ff"][B]For[/COLOR][/B] T = 1 [COLOR="#6699ff"][B]To[/COLOR][/B] AnzBlinks                            ' X mal blinken
                    [COLOR="#FF0000"][B]Objekt_[/B][/COLOR][COLOR="#009966"][B](=ListBox1.BackColor)[/B][/COLOR] = BlinkCol       ' Hintergrundfarbe neu setzen (z.B. rot)
                    Wait (Pause_Sekunden)                         ' X Sekunden warten ...
                    [COLOR="#FF0000"][B]Objekt_[/B][/COLOR][COLOR="#009966"][B](=ListBox1.BackColor)[/B][/COLOR] = oriColor       ' Hintergrundfarbe wieder auf Originalfarbe setzen
                    Wait (Pause_Sekunden)                         ' X Sekunden warten ...
                [COLOR="#6699ff"][B]Next[/B][/COLOR]                                              ' ... und noch einmal ...
    
    [COLOR="#6699ff"][B]End Sub[/B][/COLOR]
    
    
    [COLOR="#6699ff"][B]Private Sub[/B][/COLOR] Wait(Pausenlänge As Single)
    
                    Start = Timer                                                  ' Anfangszeit setzen.
                    [COLOR="#6699ff"][B]Do While[/B][/COLOR] Timer < Start + Pausenlänge
                        [COLOR="#6699ff"][B]DoEvents[/B][/COLOR]                                                   ' Steuerung an andere Prozesse abgeben.
                    [COLOR="#6699ff"][B]Loop[/B][/COLOR]
    
    [COLOR="#6699ff"][B]End Sub[/B][/COLOR]
    
    Ist so etwas möglich ?
    Gruß Frank
     
  2. Exl121150 Erfahrener User
    Hallo Frank,

    mit der Set-Anweisung kann stets nur ein Pointer auf eine Objektinstanz zugewiesen werden, aber niemals ein Pointer auf eine Eigenschaft (Property) eines Objektes.
    Me.ListBox1 ist zB. ein Listboxobjekt innerhalb einer UserForm - diese kann somit zugewiesen werden, während BackColor eine Eigenschaft von Me.ListBox1 ist.
    Folgende UserForm habe ich getestet als funktionierend. Dieser Code setzt eine "ListBox1" und einen "CommandButton1" in der UserForm voraus.

    Code:
    Option Explicit
                      
    '(Voraussetzung eine UserForm mit einer Listbox1 und einem CommandButton1)
    
    Private Sub X()
        Dim Verweis As Object
        Const rot As Long = vbRed   '&HFF&
        Set Verweis = Me.ListBox1
        Call Blinken(0.05, Verweis, rot, 3)
        Set Verweis = Nothing
    End Sub
                     
    Private Sub Blinken(Pause_Sekunden As Single, ByRef Element As Object, BlinkCol As Long, AnzBlinks As Byte)
        Dim oriColor As Long
        Dim T As Byte
        oriColor = Element.BackColor
        For T = 1 To AnzBlinks
            Element.BackColor = BlinkCol
            Wait Pause_Sekunden
            Element.BackColor = oriColor
            Wait Pause_Sekunden
        Next
    End Sub
    
    Private Sub Wait(Pausenlänge As Single)
        Dim Start As Single
        Start = Timer
        Do While Timer < Start + Pausenlänge
            DoEvents
        Loop
    End Sub
    
    Private Sub CommandButton1_Click()
      Call X
    End Sub
    
     
    Exl121150, 1. April 2016
    #2
  3. Metti Neuer User
    Vielen Dank für Deine Antwort Anton,

    zunächst hast Du natürlich vollkommen Recht, man sollte im sauberen Code keine Dimensionierungen vernachlässigen.
    Wenn man die 'Option Explicit' angibt, muss man das natürlich auch tun.
    Ich wollte primär die Problematik hervorheben und war der Lösung auch schon auf der Spur.
    Es ist von der Entwicklungsumgebung nicht vorgesehen einer Variablen in einer bestimmten Art und Weise z.B. ".ListIndex" als String zuzuweisen, um diese im weiteren Code evtl. so zu verwenden: (oder ?)

    Code:
        Dim Verweis As Object
        Set Verweis = Me.ListBox1
    
        Set Idx = ".ListIndex"                   ' ich weiss, das erzeugt beides Compilerfehler, soll nur als Gedanke dienen, um
    '      oder
        Idx = ".ListIndex"                       ' eine Eigenschaft irgendwie mit auf den Weg zu geben
    '                oder
        Idx = (.ListIndex)
    
        Verweis(Idx) =                           ' um diese dann so oder ähnlich anzuwenden
        Verweis.(Idx) = 
    Deine Codekorrekturen übernehme ich natürlich gern und werde es nun so lösen, das ich eine weitere Variable sozusagen als 'Flag' übergebe (Flag as String) in etwa so:

    Code:
         Flag = "BC"  '(für BackColor)
         Flag = "FC"  '(für ForeColor)
         Flag = "IX"  '(für .ListIndex)
    
    welche differenzieren soll, welche Eigenschaft behandelt werden soll. Da muss dann die 'Sub Blinken()' in einer <If Then Else>- oder <Case Selection>- Auswertung entsprechend verzweigen.

    Danke nochmal und lieben Gruß
    Frank
     
    Zuletzt bearbeitet: 2. April 2016
    Metti, 1. April 2016
    #3
Thema:

Objektverweis übergeben

Die Seite wird geladen...
  1. Objektverweis übergeben - Similar Threads - Objektverweis übergeben

  2. Access gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben

    in Microsoft Access Hilfe
    Access gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben: Hallo Zusammen, ist es möglich, aus einem gefilterten Endlosformular die ID (Autowert) in eine Abfrage zu übergeben? Das habe ich schon ausprobiert: In der Abfrage als Kriterium eingegeben...
  3. Inputwert in Vorlage übergeben und als xlsm speichern

    in Microsoft Excel Hilfe
    Inputwert in Vorlage übergeben und als xlsm speichern: Hallo, wir starten aus einer immer geöffnetete Exceldatei per Button eine Vorlage. Sobald die Vorlage gestartet wird, wird geprüft ob die Zelle A1 leer ist. Falls ja, kommt ein INPUT Fenster wo...
  4. Daten aus Listenfeld in Textfeld übergeben

    in Microsoft Access Hilfe
    Daten aus Listenfeld in Textfeld übergeben: Hallo Ich habe ein (Hauptformular Tabelle1) und (Abfrage Tabelle2) mit Daten in dem Hauptformular habe ich eine Listenfeld mit der (Tabelle2 Abfrage) Wenn ich im Listenfeld eine Zeile anklicke...
  5. Listen die die Werte übergeben sollen

    in Microsoft Excel Hilfe
    Listen die die Werte übergeben sollen: Hallo, ich habe in Excel 2016 eine Tabelle erstellt. Aus einen zweiten Tabelle soll dann ein 2 stelliger Batch code aus einer Liste übernommen werden. >>Die Liste hat 2 Spalten in der ersten...
  6. Funktion soll Wert in Variable übergeben (VBA)

    in Microsoft Excel Hilfe
    Funktion soll Wert in Variable übergeben (VBA): Hallo Forum-Gurus, ich bräuchte kurz Eure Hilfe. Anscheinend bin ich auf den Kopf gefallen. Folgende Funktion habe ich programmiert und möchte das Ergebnis nun in einer andere Private Sub...
  7. Der puffer der einer Funktion übergeben wurde war zu klein

    in Microsoft Access Hilfe
    Der puffer der einer Funktion übergeben wurde war zu klein: Hallo, ich bekomme seit ein paar Tagen diese Fehlermeldung: --> Der Puffer der einer Funktion übergeben wurde war zu klein 371433
  8. Umlaute an eine php Seite übergeben

    in Microsoft Access Hilfe
    Umlaute an eine php Seite übergeben: Hallo! Ich verwende ein Webbrowser Element in einem Formular wo ich von Access aus eine Get Variable übergebe wo ein Umlaut vorkommt. Wenn ich diese dann auf einer php Seite verwenden möchte...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden