Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Variablendef. und Variablen an Userform übergeben

Variablendef. und Variablen an Userform übergeben
20.06.2014 22:41:06
Ben
Hallo liebes Forum,
ich habe mein Problem von vor ein paar Tagen nun weiterprogrammiert und es sind nun neue Fragen aufgetaucht =/
Also ich habe eine Userform mit einem Textfeld (in der ich eine Kundennumer eingeben)... in der Excel Tabelle "kundendaten" soll nun nach der Kundennummer gesucht werden. Wie schaffe ich es das nun, dass die Zeile in der sich die Kundennummer befindet, als Variable gesetzt wird? Also wenn sich in der Zeile 5 die gesuchte Kundennummer befindet , die Variable D nun 5 wird.
Nachdem die Variable definiert wurde soll diese nun in die Userform Kundendaten_bearbeiten übernommen werden. Kann ich es dann irgendwie für die ganze Userformn gelten lassen? Also das ich gleich in allen Textfelder und Commandbuttons mit der Variable weiterarbeiten kann?
  • 
    Private Sub Weiter_Kundennummer_Click()
    Dim ws As Worksheet
    Set ws = Worksheets("Kundendaten")
    Dim D As Integer
    letztezeile = ws.Cells(Rows.Count, 1).End(xlUp).Row
    With ws.Range("A4:A" & letztezeile)
    Set C = .Find(Kundennummer_suchen.Text, LookIn:=xlValues, LookAt:=xlWhole)
    If Not C Is Nothing Then
    hier fehlt ein Befehl  für Variable D = Zeilennummer                                  _
    Else: MsgBox "Konnte den Eintrag nicht finden"
    End If
    End With
    Unload Me
    Kundendaten_bearbeiten(D).Show     Stimmt das mit dem "(D)"? 
    End Sub
    

  • Vielen Dank :)
    mit freundlichen Grüßen,
    Ben

    9
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Variablendef. und Variablen an Userform übergeben
    21.06.2014 00:24:30
    Mullit
    Hallo,
    wenn Du zwei Userforms hast, dann so:
    Option Explicit
    
    Private Sub Weiter_Kundennummer_Click()
    Dim D As Long
    Dim ws As Worksheet
    Dim C As Range
    Dim letztezeile As Long
    
    Set ws = Worksheets("Kundendaten")
    
    letztezeile = ws.Cells(Rows.Count, 1).End(xlUp).Row
    With ws.Range("A4:A" & letztezeile)
        Set C = .Find(Kundennummer_suchen.Text, LookIn:=xlValues, LookAt:=xlWhole)
        If Not C Is Nothing Then
    
          D = C.Row '''hier fehlt ein Befehl  für Variable D = Zeilennummer 
    
    
        Else: MsgBox "Konnte den Eintrag nicht finden"
    
        End If
    End With
    
    Unload Me
    
    With Kundendaten_bearbeiten
        .Tag = D
        .Show     ''Stimmt das mit dem "(D)"? 
    End With
    End Sub


    VBA/HTML - CodeConverter für Office-Foren
    AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
    Projektbetreuung durch mumpel



    Code erstellt und getestet in Office 12

    An die Tag-Eigenschaft kommst Du dann so in der 2. Form:
    Option Explicit
    
    Private Sub CommandButton1_Click()
    Dim lngVariable As Long
    lngVariable = Tag
    MsgBox lngVariable
    End Sub


    VBA/HTML - CodeConverter für Office-Foren
    AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
    Projektbetreuung durch mumpel



    Code erstellt und getestet in Office 12

    Gruß,

    Anzeige
    AW: Variablendef. und Variablen an Userform übergeben
    21.06.2014 22:57:05
    Ben
    Hi danke das mit dem C.Row klappt super!
    Das mit dem Tag klappt bei mir allerdings nicht ganz. Ich habe in der zweiten Userform mehrere Textfelder die bei dem öffnen der zweiten Userform automatisch mit einem Wert aus einer Excel befüllt werden sollen. Dazu brauche ich die Variable für die Zeihlenreihe, die ich eben übergeben will aus der vorherigen Userform.
    @ Mullit das mit dem Klick des nächsten Commandbuttons wird nicht klappen da die Variable ja schon am Anfang in der ganzen Userform gültig sein muss.
    Wenn ich es allerdings so mache gitb er mir Laufzeitfehler 13 Typen unverträglich ( bezogen auf lngVariable = Tag)

  • Option Explicit
    Dim lngVariable As Long
    Sub Speichern1_Click()
    lngVariable = Tag
    MsgBox lngVariable
    End Sub
    

  • Anzeige
    Falscher Datentyp !!!
    22.06.2014 07:41:20
    Nepumuk
    Hallo,
    die Tag-Eigenschaft ist ein String.
    Gruß
    Nepumuk

    AW: Falscher Datentyp !!!
    22.06.2014 08:10:23
    Mullit
    Hallo Nepumuk,
    das ist natürlich richtig, allerdings
    möchte der TO einen Long-Wert als Übergabewert
    für den Tag haben.
    Der steht zwar in der Tag Eigenschaft als String, aber wird
    wieder einer Long Variablen zugewiesen;
    Das läuft bei mir (in XL 2010) auch ohne Typ-Konvertierung ohne Fehler ab... ?!
    Schreibe ich einen String in den Tag und weise ihn der Longvariablen zu,
    bekomme ich den Typenfehler.
    Gruß, Mullit

    AW: Falscher Datentyp !!!
    22.06.2014 08:43:38
    Nepumuk
    Hallo,
    schon richtig, aber wenn nichts oder keine Zahl drin steht läufst du in einen Fehler. Du musst also entweder ersteres ausschließen oder im nachhinein prüfen ob da auch wirklich eine Zahl drin steht. Alles andere funktioniert nur zufällig und ist nicht professionell.
    Gruß
    Nepumuk

    Anzeige
    AW: Falscher Datentyp !!!
    22.06.2014 09:34:39
    Mullit
    Hallo Nepumuk,
    ah okay, gut zu wissen...Danke für den Hinweis!
    Dann sollte dies bei Ben funktionieren und den Fehler verhindern:
    Option Explicit
    Private lngVariable As Long
    Private Sub CommandButton1_Click()
    If IsNumeric(Tag) Then
    lngVariable = Tag
    MsgBox lngVariable
    Else
    MsgBox "Es wurde kein gültiger Wert übergeben.", vbExclamation
    End If
    End Sub
    

    Gruß, Mullit

    AW: Falscher Datentyp !!!
    22.06.2014 11:09:29
    Ben
    Hi danke für die vielen Antworten!
    @Mullit meinst du mit Command Button den in der zweiten Userform?
    Weil ich stehe jetzt vor dem Problem das wenn sich die zweite Userform öffnet das sich die Textbosen automatisch mit einem Wert aus der Excel "Kundendaten" Tabelle füllen sollen.
    Habe mir das mal so gedacht: (kundendaten_bearbeiten ist die zweite Userform)

  • Private Sub Kundendaten_bearbeiten_Initialize()
    dim ws as Worksheets "Kundendaten"
    If IsNumeric(Tag) Then
    lngVariable = Tag
    Else
    MsgBox "Es wurde kein gültiger Wert übergeben.", vbExclamation
    End If
    Textbox1.Text = ws.cells(IngVariable, 2).Value
    Textbox2.Text = ws.cells(IngVariable, 3).Value

  • Aber eines verstehe ich nicht ... ich habe die zweite Userform bei Name in "Kundendaten_bearbeiten" umbenannt aber wenn ich dann "Kundendaten_bearbeiten_Initialize" schreibe erkennt er es mir nicht
    Wenn ich doppelklick auf die Userform mache erscheint dann: "Userform_Click()" aber nicht "Kundendaten_bearbeiten_Click"

    Anzeige
    AW: Falscher Datentyp !!!
    22.06.2014 18:08:01
    Mullit
    Hallo Ben,
    u.a. deswegen sollte man sich mit dem Umbenennen der Objecte etwas zurückhalten:
    Mit einem Blick in den Objectkatalog stellt man fest:
    Die Events des Userforms gehören nicht zur jeweils unterschiedlichen Klasse des erstellten Userforms('Userform1'), sondern (teilweise) zur Userform-Klasse(Class Userform), die wiederum eine Schnittstelle darstellt.
    Die Name-Eigenschaft ist allerdings eine Eigenschaft der unterschiedlichen Klassen der verschiedenen erstellten Userform-Objecte(Class Userform1).
    Die Problematik hat Nepumuk hier sehr gut beschrieben und er könnte Dir das mit Sicherheit noch deutlich besser erklären .
    http://www.office-loesung.de/ftopic516038_0_0_asc.php
    Das Umbenennen ist natürlich trotzdem möglich, aber die Event-Prozeduren enthalten immer
    den Namen der Userform-Klasse und dürfen nicht verändert werden.
    Somit solltest Du hiermit in der 2. Form Zugriff auf Deinen Übergabewert bekommen:
    Option Explicit
    Private lngVariable As Long
    Private Sub UserForm_Initialize()
    Dim ws As Worksheets '''"Kundendaten"
    Set ws = Worksheets("Kundendaten")
    If IsNumeric(Tag) Then
    lngVariable = Tag
    Else
    MsgBox "Es wurde kein gültiger Wert übergeben.", vbExclamation
    End If
    TextBox1.Text = ws.Cells(lngVariable, 2).Value
    TextBox2.Text = ws.Cells(lngVariable, 3).Value
    End Sub
    
    Wenn Du den Tag-Wert nicht weiter bearbeiten willst,
    benötigst Du eigentlich auch keine Variable und kannst überall in der Form direkt
    auf ihn zugreifen.
    Du hattest übrigens lngVariable unterschiedlich geschrieben:
    Kleines 'l' statt großes 'I' ....
    Gruß, Mullit

    Anzeige
    AW: Falscher Datentyp !!!
    22.06.2014 23:32:26
    Mullit
    Hallo Ben,
    da muß nochmals nachkorrigiert werden, sonst läufst Du in zwei neue Fehler:
    Das Objekt heißt natürlich Worksheet und die Textboxen müssen in die If-Anweisung;
    zudem ist die Tag Eigenschaft im Initialize-Event noch nicht gesetzt:
    Code in Userform1:
    Option Explicit
    
    Private Sub Weiter_Kundennummer_Click()
    Dim D As Long
    Dim ws As Worksheet
    Dim C As Range
    Dim letztezeile As Long
    
    Set ws = Worksheets("Kundendaten")
    
    letztezeile = ws.Cells(Rows.Count, 1).End(xlUp).Row
    With ws.Range("A4:A" & letztezeile)
        Set C = .Find("rr", LookIn:=xlValues, LookAt:=xlWhole) '''Kundennummer_suchen.Text 
        If Not C Is Nothing Then
    
          D = C.Row '''hier fehlt ein Befehl  für Variable D = Zeilennummer 
    
    
        Else: MsgBox "Konnte den Eintrag nicht finden"
    
        End If
    End With
    
    Unload Me
    
    With Kundendaten_bearbeiten
        If Not C Is Nothing Then _
          .Tag = D
        .Show     ''Stimmt das mit dem "(D)"? 
    End With
    End Sub


    VBA/HTML - CodeConverter für Office-Foren
    AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
    Projektbetreuung durch mumpel



    Code erstellt und getestet in Office 12

    Code in Userform2:
    Option Explicit
    
    Private lngVariable As Long
    
    Private Sub UserForm_Activate()
    Dim wksSheet As Worksheet '''"Kundendaten" 
    Set wksSheet = Worksheets("Kundendaten")
    If IsNumeric(Tag) Then
      lngVariable = Tag
      With wksSheet
          TextBox1.Text = .Cells(lngVariable, 2).Value
          TextBox2.Text = .Cells(lngVariable, 3).Value
      End With
    End If
    End Sub


    VBA/HTML - CodeConverter für Office-Foren
    AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
    Projektbetreuung durch mumpel



    Code erstellt und getestet in Office 12

    Hoffentlich klappt's jetzt...
    Gruß, Mullit
    Anzeige

    300 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige