none
object-Variable in Ereignisprozedur übernehmen RRS feed

  • Frage

  • Hallo zusammen ich möchte gerne meine object-Variable xl in ein ereignis übernehmen und ich komm nicht drauf, wie ich das machen muss.
    xl steht für eine Excel-Applikation

    Ich hab eine form und darauf eine checklistbox. Diese checklistbox ist gefüllt mit den Spaltenbezeichnungen eines Excel-Workbooks. Bei Markierung eines Eintrags möchte ich über das ereignis selectedvaluechanged den inhalt der Zellen unter und oberhalb des checklistboxeintrags auswählen/ausgeben. 

    Private Sub CheckedListBox1_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckedListBox1.SelectedValueChanged
    
    Dim xl As Object
    
    Dim xplantBezeichnung As String
    
    'xl = CreateObject("Excel.Application")
    
    MsgBox(CheckedListBox1.SelectedItem)
    
    xplantBezeichnung = CheckedListBox1.SelectedItem
    
    MsgBox(xl.worksheets("Instrument MSR").Range("2:2").find("Menge").value)
    
    Me.TextBox1.Text = xl.worksheets("Instrument MSR").Range("2:2").find(xplantBezeichnung).value
    
    End Sub

    Mein problem: ich weiß nicht wie ich meine objectvariable xl aus der vorhergegeangenen prozedur an mein ereignis übergeben kann.

    merci für jede antwort

    gruß armin

    Montag, 22. Februar 2010 14:22

Antworten

  • Hallo Armin,

    das erreichst Du, indem Du die Variable xl modulweit deklarierst, also im allgemeinen Teil Deines Klassenmoduls und nicht innerhalb der Methode selber.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    • Als Antwort markiert armino_campino Dienstag, 23. Februar 2010 07:06
    Montag, 22. Februar 2010 15:57
    Moderator

Alle Antworten

  • Hallo Armin,

    das erreichst Du, indem Du die Variable xl modulweit deklarierst, also im allgemeinen Teil Deines Klassenmoduls und nicht innerhalb der Methode selber.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    • Als Antwort markiert armino_campino Dienstag, 23. Februar 2010 07:06
    Montag, 22. Februar 2010 15:57
    Moderator
  • Danke für die Antwort. Das ist die Lösung. ich musste bei mir allerdings noch eine kleine Modifikation vornehmen.

    Also für alle die das selbe Problem haben: Ihr müsst eure Variable global in einem extra modul deklarieren, damit ihr die Variable von einem Klassenmodul in das nächste übernehmen könnt. damit könnt ihr auf die geöffnete Exceldatei oder was auch immer zugreifen.

    over and out

    Dienstag, 23. Februar 2010 07:06
  • Hallo,

    wenn man Variablen von einer Klasse in die nächste übernehmen möchte, übergibt man diese meistens per Parameter. Entweder über den Konstruktor der Klasse oder direkt über die Methode, die den Verweis benötigt. Auf globale Variablen sollte man nach Möglichkeit verzichten. Man kann sich damit ziemlich unschöne Probleme einhandeln, die nachher schlecht zu debuggen sind.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    Dienstag, 23. Februar 2010 08:03
    Moderator