2016-11-25 3 views
0

Also, ich mache ein Array in VBA, und ich muss ein zweidimensionales Array machen.Ergebnisse zeigen 0, obwohl der Benutzer verschiedene Zahlen eingegeben hat?

Alles scheint gut zu funktionieren, aber die Ergebnisse zeigen 0, obwohl ich möchte, dass sie das Ergebnis zeigen, das der Benutzer gestellt hat.

Hier ist der Code:

Public Sub Masiivs() 

    Dim Arr(5, 5) As Integer 
    Dim Arg As String 
    Dim X, Y As Integer 
    Dim Rezult As String 
    Dim I, J As Long 
    Y = 1 

     While Y < 26 
      X = InputBox("Ievadiet masīva skaitļus Nr. " + CStr(Y), "Datu Ievade") 
      Y = Y + 1 
     Wend 

    For I = LBound(Arr) To UBound(Arr) 
     Arg = Arg + " " + CStr(Arr(I, I)) 

    Next I 

    MsgBox Arg 

End Sub 

Apologies, einige der Wörter in lettischer Sprache sind, aber es ist nicht so wichtig. Es fragt einfach nach der Nummer jedes Arrays.

+0

Es gibt mindestens 2 Probleme. 1) Sie weisen 'X' keinem Slot in' Arr' zu. 2) Wenn Sie (1) getan haben, wiederholen Sie immer noch nicht "Arr" über beide Dimensionen. –

+1

Nun, zuerst schreibst du nie etwas in dein Array ... und zweitens gibst du nur die Summe der diagonalen Terme des Arrays aus. –

+0

@RobinMackenzie Also sollte ich meine Arr (I, I) zu Arr (X, X) oder etwas ändern? Vielen Dank. – Arthur

Antwort

1

Sie speichern niemals die Werte in Ihrem Array, so dass sie niemals gespeichert werden. so etwas wie dieses versuchen:

Dim X As Integer, Y As Integer 
Dim Arr(5, 5) As Integer 
Dim Arg As String 

'Loop through the first dimenion of Arr 
For X = LBound(Arr, 1) To UBound(Arr, 1) Step 1 

    'Loop thourgh the second dimension of Arr 
    For Y = LBound(Arr, 2) To UBound(Arr, 2) Step 1 

     'Ask for Input and save it at current position 
     Arr(X, Y) = InputBox("Ievadiet masiva skaitlus Nr. " + CStr(Y), "Datu Ievade") 
     'add value to Arg 
     Arg = Arg & Arr(X, Y) 
    Next Y 
Next X 

MsgBox Arg 

Edit: So fügen Sie Leerzeichen um Ihre Messagebox, ändern Sie die Zeile: Arg = Arg & Arr(X, Y)-Arg = Arg & " " & Arr(X, Y). Die Ausgabe wird etwa so aussehen: 1 2 3 4. Um das führende Leerzeichen abgeschnitten, verwenden Trim(): Arg = Trim(Arg)

Um ein Leerzeichen nach jedem fünften Element eingeben, fügen Sie Arg = Chr(10) & Arg zwischen Next Y und Next X. Jedes Mal, wenn die innere Schleife endet, fügen Sie der Zeichenfolge einen Zeilenumbruch hinzu.

+0

Danke, dies scheint mir die Ergebnisse der Benutzereingabe zu geben, aber wie kann ich einen Abstand zwischen den einzelnen Eingaben machen und sie nach jeder fünften Eingabe in eine neue Zeile setzen? – Arthur

+0

@Arthur move 'Arg = Arg &" "& Arr (X, Y)' nach der Zeile von 'Next Y' –

+0

@Shairado Das schien zu funktionieren. Jetzt bleibt nur noch eine neue Zeile nach jeder 5. Eingabe übrig. Wie kann ich das machen? Entschuldigung für so viele einfache Fragen. – Arthur

Verwandte Themen