Zum Inhalt springen

Dragon8

Mitglieder
  • Gesamte Inhalte

    587
  • Benutzer seit

  • Letzter Besuch

Beiträge von Dragon8

  1. So ich habe mich mal rangesetzt und hoffe ich kann dir damit ein wenig helfen.

    Insgesamt sieht der Quellcode für das Problem von dir bei mir so aus:

        
    
        Dim VarAntworten As Variant     'Array für die Antwortmöglichkeiten
    
        Dim IntZufall As Integer        'Zufallszahl
    
        Dim x As Integer, i As Integer, y As Integer, a As Integer  'Schleifenvariablen
    
        VarAntworten = Array("Südamerika", "Asien", "Afrika")
    
        i = 0
    
        For x = UBound(VarAntworten) To 0 Step -1
    
            IntZufall = Int((x + 1) * Rnd)
    
            UserForm1.Controls(i).Caption = VarAntworten(IntZufall)
    
            VarAntworten(IntZufall) = ""
    
            If x = UBound(VarAntworten) Then
    
                a = 1
    
            Else: a = 0
    
            End If
    
            For y = 0 To x - a Step 1
    
                If VarAntworten(y) = "" Then
    
                    VarAntworten(y) = VarAntworten(y + 1)
    
                    VarAntworten(y + 1) = ""
    
                End If
    
            Next y
    
            i = i + 1
    
        Next x
    
    
    Und folgendermaßen habe ich es mir gedacht, wie du das in deinen Quellcode einbinden könntest. Beim Aufruf deiner Sub deklarierst du die Variablen,
        Dim VarAntworten As Variant
    
        Dim IntZufall As Integer
    
        Dim x As Integer, i As Integer, y As Integer, a As Integer
    
    
    Dann ersetzt du in jedem If-Zweig, wo du bisher die Antwortmöglichkeiten direkt den Optionsfeldern zuweist, diese drei Zeilen einfach durch die Initialisierung des Arrays. natürlich mit den jeweilig richtigen Antwortmöglichkeiten, habe hier erstmal nur die Antworten für die erste Frage genommen
        VarAntworten = Array("Südamerika", "Asien", "Afrika")
    Und dann bevor deine Sub beendet wird, fügst du den Rest des Quellcodes ein.
        [COLOR="Red"]i = 0[/COLOR]
    
        For x = UBound(VarAntworten) To 0 Step -1
    
            IntZufall = Int((x + 1) * Rnd)
    
            UserForm1.Controls(i).Caption = VarAntworten(IntZufall)
    
            VarAntworten(IntZufall) = ""
    
            If x = UBound(VarAntworten) Then
    
                a = 1
    
            Else: a = 0
    
            End If
    
            For y = 0 To x - a Step 1
    
                If VarAntworten(y) = "" Then
    
                    VarAntworten(y) = VarAntworten(y + 1)
    
                    VarAntworten(y + 1) = ""
    
                End If
    
            Next y
    
            i = i + 1
    
        Next x
    
    
    Was außerdem noch zu beachten ist, die Initialisierung der Variable i (hier rot makiert) muss bei dir höchstwahrscheinlich angepasst werden. Welcher Wert dieser Variablen zugewiesen werden muss, erfährst du durch diese Funktion:
    Sub CountControls()
    
        Dim con As Control
    
        Dim i As Integer
    
        i = 0
    
        For Each con In [COLOR="Red"]UserForm1[/COLOR].Controls
    
            Debug.Print i & " " & con.Name
    
            i = i + 1
    
        Next con
    
    End Sub
    
    

    Füg sie einfach in einem neuen Modul ein und pass auch hier den rot makierten Namen an, dort muss der Name deiner Userform rein.wenn du sie dann durchlaufen lässt, wird dir eine Liste der Steuerelemente deiner Userform angezeigt, ich hoffe inständig, dass die die drei Label zu den Optionsfelden hintereinander erstellt hast, dann suchst du dir einfach 'lblAntwortA' aus der Liste raus, die anderen beiden müssten dann ja danach kommen, und trägst die Zahl die davor steht einfach als Wert in der Variable i ein.

    Falls du die drei Label nicht hintereinander erstellt, sonder dazwischen noch andere Steuerelemente, müsste es helfen, wenn du alle drei Label einmal löscht und neu erstellst, dann dürften sie am Ende der Liste auftauchen.

    So ich hoffe mal ich habe nichts vergessen, es war alles so gut verständlich wie ich es hier geschildert habe und es funktioniert bei mir.

    Mit freundlichen Grüßen Dragon8

  2. Also ich habe in Word im Dokument ein Textformatfeld, außerdem habe ich eine Userform, auf der sich eine Textbox und eine Button befindet.

    Ich möchte nun, dass wenn man auf den Button klickt der Text, der sich in der Textbox bedindet, in das Formatfeld geschrieben wird. Soweit ja kein Problem, aber es wird zu einem, wenn ich die Textbox zu einer mehrzeiligen Textbox mache; mit der EnterKeyBehavior- und der Multiline-Eigenschaft auf True. Wenn ich nun den Text übertragen möchte, schreibt er in das Formatfeld anstatt der Zeilenumbrüche zwei Quadrate welches meiner Meinung nach die Steuerzeichen für Zeilenvorschub und und Wagenrücklauf darstellen sollen.

    Kann mir nun jemand einen Tipp geben, wie ich es hinbekomme, dass er einen richtigen Zeilenumbruch dorthin schreibt?

    Code zum übertragen des Textes:

    
    Private Sub CommandButton1_Click()
    
        ActiveDocument.FormFields(1).Result = UserForm1.TextBox1.Text
    
    End Sub
    
    

    Dies ist nur ein Beispielcode, meinen richtigen Code kann ich leider nicht posten, da ich ihn auf Arbeit habe, es dort aber nicht ins Internet kopieren kann.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...