2017-08-14 1 views
0

Ce code est une partie d'un code plus grand qui prend les mots d'une zone de liste et lieux dans une autre zone de liste, qui, avec ce code sépare les mots du listbox et établit des mots qui peuvent être inséré dans une cellule, pour une raison quelconque deuxième strsplt ne montre pas, tout le reste fonctionne très bien, c'est juste celui-ci, j'ai besoin d'aide et il n'y a pas d'erreur qui est jeté. Je l'ai regardé en avec F8 et points d'arrêt et le problème semble être aveccode Skipping deuxième cellule, non Supposed To

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

Le code entier:

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: La façon dont il ressemble à l'aide debug.print str

  1. item1
  2. article2 article3 article4 ...
+1

Juste un heads-up, il est pratique courante d'utiliser '' si j' au lieu ii' comme une boucle intérieure pour si vous allez nicher vos boucles! – Jsleshem

+0

Que se passe-t-il avec 'vbLF' est-ce que' vbCRLF' est présent? – Jeeped

+0

@Jeeped J'ai entendu vbCrLf est mieux sous Windows – MaxAttack102

Répondre

0

Essayez une brute de peu forcer comme ceci:

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

J'ai changé i-i+1 dans votre code. Ensuite, déboguez à nouveau. Si cela ne fonctionne pas, essayez i-1, ii+1, ii-1. L'un d'entre eux fonctionnera et il peut donner une erreur hors de portée. Ensuite, fixez la longueur du tableau et amusez-vous.

+0

Il me donne juste un abonnement hors de portée – MaxAttack102

+0

@ MaxAttack102 - mais avant cela? Est-ce que la ligne 2. présente? Déboguez-vous avec F8? Avez-vous essayé les 4 possibilités? – Vityata

+0

Ouais 2 d'entre eux m'ont donné sous notre gamme et on m'a donné quelque chose à propos de la propriété de la liste. rien n'a rien dit sur le débordement, je peux réessayer – MaxAttack102