Thema Datum  Von Nutzer Rating
Antwort
Rot User Korrekturvorschlag bei UDF
24.04.2013 07:16:17 Manuel
NotSolved
24.04.2013 09:07:52 Manuel
Solved
24.04.2013 12:36:39 Holger
NotSolved
24.04.2013 13:43:03 Gast25285
Solved

Ansicht des Beitrags:
Von:
Manuel
Datum:
24.04.2013 07:16:17
Views:
1796
Rating: Antwort:
  Ja
Thema:
User Korrekturvorschlag bei UDF

Hallo liebe Leute,

da ich hier ein paar Probleme habe und es anscheinend keine optimalen Lösungen dafür gibt (zumindest nach etlichen Stunden Google und Forumsdurchforsten), würde ich doch gerne mal hier versuchen die Fragestellung auf den Punkt zu bringen. Entgegen jeglicher Logik (EVA-Prinzip) poste ich hier mal meinen Code zum Eingeben der Werte durch den User und erkläre weiter unten meine Intention Evil or Very Mad (Ein paar von euch kennen ja bereits miene abstruse und völlig verwirrte Vorgehensweise Razz ):

 

Function EingabefktTyp4(z1, z2, x1, y1, ParamArray parray() As Variant) As String 
If z1 <> "" And z2 <> "" Then 'red2 
    If IsArray(x1) Or IsArray(y1) Then 'red3 
        If IsArray(x1) And IsArray(y1) Then 'red4 
            If UBound(parray()) <> -1 Then 'blue1 
            EingabefktTyp4 = "Zu viele Parameter" 
            End 
            Else 'red5 
                If x1(1) = "" Or y1(1) = "" Then 'blue2 
                EingabefktTyp4 = "Zu wenig Parameter" 
                End 
                Else 'red6 
                'MsgBox x1.Count 
                'MsgBox y1.Count 
                If x1.Count = y1.Count Then   'blue3 
                    
                    'HIER RECHNEN MIT RANGES! 
                    'MsgBox "rechnung mit ranges" 
                    EingabefktTyp4 = x1(x1.Count) & y1(y1.Count) 
                    
                    Else 'blue4 
                    EingabefktTyp4 = "Ranges nicht gleich groß!" 
                    End 
                    End If 
                    End If 
                    End If 
                    Else 'blue5 
                    If IsArray(x1) = False Then 'blue 5,5 
                    EingabefktTyp4 = "x1 ist kein Rangeobject" 
                    End 
                    End If 
                    If IsArray(y1) = False Then ' blue 5,6 
                    EingabefktTyp4 = "y1 ist kein Rangeobject" 
                    End 
                    End If 
                    
                    EingabefktTyp4 = "x1 und y1 müssen Range oder Einzelwert sein, Paramarray muss dabei leer gelassen werden!" 
                    End 
                    End If 
                    Else 'red 7 
                    'MsgBox "red7" 
                    
                    
                    If x1 <> "" And y1 <> "" Then 'red8 
                        If UBound(parray()) <> -1 Then 'blue6 
                        EingabefktTyp4 = "zu viele Parameter" 
                        End 
                        Else 'blue7 
                        
                        'Rechnung mit einzelwerten x1, y1 
                        'MsgBox "Rechnung mit einzelwerten" 
                        EingabefktTyp4 = (x1 & y1) 
                        
                        End If 
                        
                    Else 'red8,5 
                        
                        'MsgBox (UBound(parray)) 
                        If x1 <> "" Or y1 <> "" Then 'blue7,5 
                       EingabefktTyp4 = "x1 und y1 müssen für die Verwendung von Parray beide leer sein!" 
                        End 
                        Else 'red9 
                        If UBound(parray()) <> -1 Then 'red10 
                        'MsgBox "red10" 
                        If (((UBound(parray) + 1) Mod (2)) = 0) Then 'blue8 
                        
                        'Rechnung mit Paramarray! 
                        'MsgBox "rechnung mit paramarray" 
                        EingabefktTyp4 = parray(UBound(parray())) 
                        
                        
                        Else 'blue9 
                        EingabefktTyp4 = "Parameterzahl ungerade" 
                        End 
                    End If 
                Else 'blue10 
                EingabefktTyp4 = "zu wenig Werte" 
                End 
                End If 
            End If 
        End If 
        End If ' ??? von red 8,5 
    Else 'blue11 
    EingabefktTyp4 = "z1 oder z2 falsch" 
    End 
End If 
Exit Function 
'error1: 
EingabefktTyp4 = "In den Feldern X1, Y1 müssen immer Werte stehen. Falls keiner eingestzt werden soll, bitte "" verwenden!" 

End Function 



Falls sich jemand wundert, warum da hintendran immer red und blue steht, ich habe mir einen PAP erstellt und die If-schleifen mit rot und die Anweisungen mit blau markiert.

Auf Anfrage lade ich diesen auch gerne irgendwie hoch oder Maile ihn zu. Das Problem dabei ist nur, dass ich hier nur schlecht Files sharen kann, da diesbezügl. fast alle Seiten gesperrt sind und das Problem wahrscheinlich auch so schon erkannt werden kann.

Der Code dient dazu entweder x1 und y1 (als Ranges, also Arrays oder einfache Werte) oder das Paramarray zur initialisierung zu benutzen. Mir ist auch klar, dass im Falle der Benutzung des Paramarrays immer " "" " in x1 und y1 geschrieben werden muss.
Die Parameter z1 und z2 sind immer auszufüllen.
Der Code sollte jetzt eine Meldung ausgeben, falls der Benutzer mit dem Funktionsassistent Werte falsch eingibt.
Das funktioniert ja auch so weit ganz gut, jedoch ist die Msgbox wirklich sehr nerfig, da sie sich ständig mehrmals öffnet. Confused
Ich habe hier der Einfachheit halber die eigentlich Funktion immer nur duch einen Kommentar ("Hier Rechnung mit blabla") erstezt um das Ganze übersichtlicher zu gestalten. Es geht mir wie gesagt nur darum, dem Endbenutzer das Ausfüllen der Felder im Wizard zu erleichtern. Für die eigentliche Funktion habe ich auch schon eine eigene Kategorie mit Erklärungen zu den Funktionen erstellt, darum geht es mir hier also nicht. (Falls da jemand wissen will poste ich es gerne, aber es gibt dazu schon hunderte Beiträge im WWW)Jetzt also zur eigentlichen Frage. Wie kann ich dem Benutzer eine falsche Eingabe mitteilen ohne sehr viele penetrante Messageboxes zu erhalten. Question
Ich habe auch schon die Variante gewählt, in der sich die Msgbox nach einer Sekunde schliesst (auch wirklich keine elegante Variante) und versucht den Assistent (Also den Hund oder die Klammer), bzw. einen Balloon Popup zu benutzen (beides scheint in Office 2010 nicht mehr möglich zu sein)
Dadurch könnte der user nämlich einfach fleissig weiter eingeben ohne bei seiner Eingabe ständig unterbrochen zu werden.
Einen Kommentar mit Korrekturtext einzublenden funktioniert anscheinend auch nur, falls man die Fkt bereits richtig eingegeben hat.
Und den "Hilfspopup" (=Helptag glaube ich) wie bei den Standartfunktionen einzublenden funktioniert bei allem aktuellen Versionen von Excel auch offensichtlich nicht (fremde Addons will ich nicht einbinden).

Hat vielleicht jemand von euch noch eine Idee, wie ich die Infos an den/die Mann/Frau bringe, ohne dass 1000mal eine Msgbox kommt die den Benutzer verrückt macht?
Von Textboxes habe ich leider wenig Ahnung, viell. kann man damit was machen, bin gerne bereit mir neues anzueignen.Ich habe da über Google auch schon diverses gefunden, aber nicht wirklich verstanden.

Ich bedanke mich schon mal im Vorraus für alle Meldungen und hoffe damit viell. ein wenig Klarheit zu schaffen, auch für Andere die auf der selben Suche sind, (scheinen nämlich viele zu sein) aber auch nicht wirklich Ahnung haben, von dem was sie machen. Wink

In diesem Sinne Very Happy


Gruß Manuel


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot User Korrekturvorschlag bei UDF
24.04.2013 07:16:17 Manuel
NotSolved
24.04.2013 09:07:52 Manuel
Solved
24.04.2013 12:36:39 Holger
NotSolved
24.04.2013 13:43:03 Gast25285
Solved