Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1140to1144
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
Userform über Function aufrufen - keine Werte
Burns
Guten Tag :-)
Ich besitze da ein Problem, an dem ich schon seit ca. 3 Tagen zu knabbern hab.
Nach stundenlangem suchen bin ich total am Ende und hoffe, dass Ihr mir helfen könnt x)
zur Theorie:
Ich besitze 3 Spalten mit jeweils folgenden Überschriften(A1:C1)
A1. Farbe B1. Hell C1. Dunkel
Wenn ich nun unterhalt der Zelle A1, sprich A2 eine Wert wie
z.B. Gelb eintrage, dann soll automatisch die Userform1 geöffnet werden
in der ich über 2 Optionbuttons auswählen kann"Hell" oder "Dunkel".
Je nachdem, welchen Button ich anklicke soll er unter der entsprechenden
Zeile(sprich entweder unter B1 oder unter C1) ein "x" einsetzen und die Userform
soll sich automatisch schließen.
Zur Praxis:
Ich habe eine "Function" geschrieben, die wie folgt aussieht
Function HellDunkel()
Call UserForm1.Show
End Function
' Hiermit rufe ich die Funktion auf
Die Userform besteht nur aus 2, wie oben schon beschrieben,
Optionbuttons, mit denen ich auswählen kann zwischen "hell"
oder "dunkel"
Der Vba-Code eines Optionsbuttons sieht folgendermaßen aus:
--

Private Sub OptionButton1_Click()
If OptionButton1.Value = True Then
Range("B2") = "x"
End If
UserForm1.Hide
End Sub

In der Zelle B2 steht folgende Funktion
"=wenn(A2="Gelb";HellDunkel();"")
Die Userform öffnet sich nachdem ich in die Zelle A2 den Wert
"Gelb" eingetragen habe, aber anschließend kann die Userform keinen
Wert in das Tabelleblatt übertragen.
Ich hoffe.., Ihr könnt mir helfen x)
Schonmal im Vorraus Vielen Dank x)
Liebe Grüße, Burns =)
AW: Userform über Function aufrufen - keine Werte
26.02.2010 17:11:17
Tino
Hallo,
verwende dafür keine Funktion sondern ein Eventmakro.
In die Tabelle stellst Du diesen Code
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A2") = "Gelb" Then
UserForm1.Show
End If
End Sub
In der Userform passt Du den Code so an.
Private Sub OptionButton1_Click()
Application.EnableEvents = False
If OptionButton1.Value = True Then
Range("B2") = "x"
End If
Unload Me
Application.EnableEvents = True
End Sub
Gruß Tino
AW: Userform über Function aufrufen - keine Werte
26.02.2010 17:18:02
Burns
Ja Wahnsinn x))))))))))
Es funktioniert..., ich glaub echt ich Spinn x)
VIEIIIIIIIIIIIELEN DANK !!!!!!!!!!! :-)
Allerdings verstehe ich folgendes nicht:
Application.EnableEvents =
Ich nehme an, dass dieser Code der Userform erlaubt,
das "x" in die entsprechende Zeile zu schreiben.
Warum ging das vorher nicht mit einer "function"?
Grüße Burns =)
Anzeige
Du kannst auch noch die Zelle abfragen...
26.02.2010 17:20:20
Tino
Hallo,
wo die Eingabe stattgefunden hat.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("A2"), Target) Is Nothing Then
If Range("A2") = "Gelb" Then
UserForm1.Show
End If
End If
End Sub
Gruß Tino
Weitere Daten eintragen und automaitsch Zeile erk
26.02.2010 17:39:55
Burns
In Ordnung =)
Das hab ich jetz so "halbwegs" verstanden mit hilfe von Google erreicht man mehr =)
Wenn ich jetzt unterhalb noch mehr Farben eintrage,
wie kann ich zu diesem sagen, dass er automatisch in die
Zeile gehen soll, in der ich eine Farbe reinschreibe?
Bzw. wenn ich in Zeile5 Gelb reinschreibe, dass er er ebenso in B5
gegebenfalls in C5 das entsprechende Kreuz reinschreibt?
Ich habe folgendes probiert:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A2:A10") = "Gelb" Then
UserForm1.Show
End If
End Sub
Kommt aber nur ne Fehlermeldung =(....
Darf ich Dich nochmals um Deine Hilfe bitten =)
Anzeige
AW: Weitere Daten eintragen und automaitsch Zeile erk
26.02.2010 18:05:52
Tino
Hallo,
für mehrere Zellen müsste es so gehen.
kommt als Code in Tabelle1
Option Explicit 
 
Private Sub Worksheet_Change(ByVal Target As Range) 
Dim rngRange As Range 
Set rngRange = Intersect(Range("A2:A10"), Target) 
 
If Not rngRange Is Nothing Then 
    For Each rngRange In rngRange 
       If rngRange = "Gelb" Then 
           lngRow = rngRange.Row 
           UserForm1.Show 
       End If 
    Next rngRange 
End If 
 
lngRow = 0 
End Sub 
kommt als Code in UserForm1
Option Explicit 
 
Private Sub OptionButton1_Click() 
Application.EnableEvents = False 
    If OptionButton1.Value Then 
        Cells(lngRow, 2).Value = "x" 
    End If 
    Unload Me 
Application.EnableEvents = True 
End Sub 
 
 
kommt als Code in Modul1
Option Explicit 
 
Public lngRow As Long 
Gruß Tino
Anzeige
VielenDank x)
26.02.2010 18:15:52
Burns
Hat alles funktioniert...
verstehen kann ichs zwar noch nicht ganz...
ich werd mich weiter in die Büchers stürzen,
um dieses i-wann mal zu verstehen =)
Vielen Dank für Alles - Grüße Burns =)
Um dir deine noch offene, von Tino nicht...
27.02.2010 01:13:09
Tino
…beantwortete Frage Warum ging das vorher nicht mit einer "function"? zu beantworten, Burns…
Eine (im TabBlatt) eingesetzte Fkt darf so etwas nicht, es gäbe sonst ggf ein heilloses Durcheinander bis hin zum xlAbsturz. Du kannst mit einer udFkt maximal eine MsgBox, evtl auch eine InputBox anzeigen und einen unformatierten Kommentar bzw ein leeres, unformatiertes Textfeld auf der FmlZelle anlegen.
Man kann diese Einschränkungen zwar umgehen, aber eben auch nur über die Auslösung eines Ereignisses, das dann seinerseits eine von der udFkt physisch entkoppelte (d.h., nicht mit ihr direkt zusammenhängende) Subroutine aufruft. Dabei kann/muss die udFkt ggf eine Globalvariable füllen, die von der Subroutine ausgewertet wird. Je nachdem, was die udFkt darüber hinaus liefern soll, muss die Subroutine ggf ihre Neuberechnung veranlassen und ihr dabei eine evtl Antwort, die sie dann in einem alternativen Lösungsstrang auswertet, in der Globalvariablen zukommen lassen.
So etwas sollte man aus den o.g. Gründen natürl nicht exzessiv betreiben. Außerdem entspricht diese Technik eigentl noch nicht deinem VBA-Level. Aber da du ja lernwillig bist, könntest du so etwas irgendwann sicher mal realisieren wollen. So kannst du dann auch Füllen und Formatieren beliebiger Zellen quasi per udFkt bewerkstelligen. Die landläufige und immer wieder kolportierte Meinung ist nämlich, dass das nicht ginge; aber Vorsicht, wenn du mal so weit bist — kann ins Auge gehen → also nur was für Einzelfälle! Auch 'ne kleine Tabelle aus lauter einzelnen Textfeldern ist so mit udFktt erzeugbar.
Du hast sicher Verständnis dafür, dass ich das hier nicht mit BspCodes unterlegen will…
Gruß+schöWE, Luc :-?
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