2017-08-14 1 views
0

Dieser Code ist ein Teil eines größeren Codes, der Wörter aus einer Listbox nimmt und in eine andere Listbox legt, die mit diesem Code die Wörter in der Listbox trennt und in Wörter aufteilt, die es können in eine Zelle eingefügt, aus irgendeinem Grund zweite strsplt wird nicht angezeigt, alles andere funktioniert sehr gut, es ist nur diese, ich brauche Hilfe mit und es gibt keinen Fehler, der rausgeworfen wird. Ich habe es mit F8 sah über und Haltepunkte und das Problem mit zu sein scheintCode überspringt zweite Zelle, nicht angenommen

If ii < .ColumnCount - 1 Then 
    str = str & .List(i, ii) & vbCrLf 
Else 
    str = str & .List(i, ii) 
End If 

Der vollständige Code:

With Me.selecteditems 
    ThisWorkbook.Sheets(9).Range("A:B").ClearContents 
    For i = 0 To .ListCount - 1 
     If .Selected(i) Then 
      found = True 
      For ii = 0 To .ColumnCount - 1 
      ReDim strsplt(0 To i) 
       If str = "" Then 
        str = .List(i, ii) & vbCrLf 
       Else 
        If ii < .ColumnCount - 1 Then 
         str = str & .List(i, ii) & vbCrLf 
        Else 
         str = str & .List(i, ii) 
        End If 
       End If 
      Next ii 
      message = "How much" & vbCrLf & str & "?" & vbCrLf 
      title = "Amount" 
      defaultval = "1" 
      quantity = InputBox(message, title, defaultval) 
      strsplt = Split(str, "*") 
     End If 
     'On Error Resume Next 
     With ThisWorkbook.Sheets(9) 
      .Range("A" & (i + 1)).Value = strsplt(i) 
      .Range("B" & (i + 1)).Value = quantity 
     End With 
     'On Error GoTo 0 
    Next i 
End With 

EDIT: So wie es debug.print str

  1. wie mit aussieht item1
  2. item2 item3 item4 ...
+1

Nur ein Heads-up, es ist allgemeine Praxis, 'j 'statt wenn' ii 'als innere for-Schleife zu verwenden, wenn Sie Ihre Schleifen nisten werden! – Jsleshem

+0

Was passiert mit 'vbLF' anstelle von' vbCRLF'? – Jeeped

+0

@Jeeped Ich hörte, VbCrLf ist besser auf Windows – MaxAttack102

Antwort

0

Versuchen Sie, ein bisschen brutaler wie diese zwingen:

If ii < .ColumnCount - 1 Then 
    str = str & .List(i+1, ii) & vbCrLf 
Else 
    str = str & .List(i+1, ii) 
End If 

I i-i+1 in Ihrem Code geändert haben. Dann erneut debuggen. Wenn es nicht funktioniert, versuchen Sie i-1, ii+1, ii-1. Einer davon funktioniert und es kann zu einem Fehler außerhalb des Bereichs kommen. Dann fixiere die Array-Länge und hab Spaß.

+0

Es gibt mir nur ein Abonnement außerhalb der Reichweite – MaxAttack102

+0

@ MaxAttack102 - aber vorher? Ist die 2. Linie vorhanden? Debuggen Sie mit F8? Hast du alle 4 Möglichkeiten ausprobiert? – Vityata

+0

Yeah 2 von ihnen gab mir sub unserer Reichweite und man gab mir etwas über die Liste Eigentum. keiner hat etwas über den Überlauf gesagt, ich kann es nochmal versuchen – MaxAttack102

Verwandte Themen