Erstellen einer Zahlenfolge in Excel von der ersten bis zur zweiten eingegebenen Zahl

0

Ich möchte Zahlen in ein Nachrichtenfeld zwischen zwei von mir gewählten Zahlen schreiben. Bei der Überprüfung, ob es sich um gerade Zahlen handelt, müssen sie von der kleinsten bis zur größten Zahl reichen. Die 2 Zahlen müssen positiv und kleiner als 100 sein.

Ich verwende Visual Basic in Excel, habe es aber noch nie zuvor verwendet.

Private Sub CommandButton1_Click()

Dim a, b, P, i As Integer

a = InputBox("Write number from 1 to 100 ")
If a <= 0 Or a >= 100 Then
MsgBox "Wrong input"
Exit Sub
End If
b = InputBox("Write number from 1 to 100 ")
If b <= 0 Or b >= 100 Then
MsgBox "Wrong input"
Exit Sub
End If

For i = a To b
If a <> 0 & a <= b Then
a = a + 1
Else
P = a
a = a + 1
Exit For
End If
Next i

MsgBox P


End Sub
Marko Plavanjac
quelle
Ich kann nicht herausfinden, wie ich die Schleife am Leben erhalten kann, nachdem ich überprüft habe, ob die erste Zahl gerade ist.
Marko Plavanjac
Veröffentlichen Sie Ihren Code in Ihrem ursprünglichen Beitrag
Ron Rosenfeld

Antworten:

0

Ich würde es ein bisschen anders machen. Sie können dies sicherlich mit einem command_button auslösen. Beachten Sie, dass ich nach geraden Zahlen suche (und Null auch nicht als positive (oder negative) Zahl betrachte).

Option Explicit
Sub CreateSequence()

   'Note each variable must have a type declaration,
   '   else they will be of type Variant
    Dim x As Long, y As Long, z As Long
    Dim S As String

x = InputBox("First Number")
y = InputBox("Second Number")

If Not CheckNum(x) Or Not CheckNum(y) Then
        MsgBox "Both numbers must be positive and less than 100"
        Exit Sub
    End If

If x > y Then 'reverse x and y
    z = y
    y = x
    x = z
End If

For z = x To y
    'check if even and add to string if they are
    If z Mod 2 = 0 Then S = S & vbLf & z
Next z

'Remove the leading separator (vbLf)
S = Mid(S, 2)

MsgBox S

End Sub

Function CheckNum(L As Long) As Boolean
    If L > 0 And L < 100 Then
        CheckNum = True
    Else
        CheckNum = False
    End If

End Function
Ron Rosenfeld
quelle
Das ist für mich etwas zu kompliziert, ich habe keine Ahnung, was Sie mit Check Num gemacht haben. Und ich weiß nicht was vbLf ist.
Marko Plavanjac
Es ist ziemlich gut, aber ich muss die resultierenden Zahlen in einer Reihe anzeigen, nicht in einer Spalte, und ich muss auch wissen, wie die Sequenzierung von der letzten zur ersten Zahl erfolgt
Marko Plavanjac
@MarkoPlavanjac Wenn Sie den Code durchgehen und die Variablen im unmittelbaren Fenster untersuchen, sollten Sie in der Lage sein, all dies herauszufinden. vbLf ist das Zeilenvorschubzeichen; Wenn Sie also ein anderes Trennzeichen verwenden möchten, ändern Sie dies einfach. Wenn Sie von der letzten bis zur ersten Zahl fortfahren möchten, was sich von Ihrer Frage unterscheidet, verwenden Sie einfach die Step Argument der For ... Next Anweisung mit einem negativen Wert. Ist das Hausaufgabe?
Ron Rosenfeld
@MarkoPlavanjac Möglicherweise möchten Sie eine Internetsuche in Bezug auf die Verwendung des For ... Next Aussage in VBA
Ron Rosenfeld