2016-04-21 107 views
0

我想我的变量varJoin写在A列的每个细胞这样写只是在1,1 ....我希望有人能帮助我:)写在Excel单元格中

Sub extractionMots() 
    Dim Tableau() As String 
    Dim i As Integer 
    Dim res As String 
    Dim ZoneTest As Range 
    Dim ZoneEcrire As Range 
    Dim CelluleSelect As Range 

    Dim arr As Variant 
    Dim varJoin As Variant 

    Set ZoneTest = Range("C1:C16") 
    Set ZoneEcrire = Range("A1:A16") 

     For Each CelluleSelect In ZoneTest 

      ' Suppression des espaces superflus 
      CelluleSelect = Application.WorksheetFunction.Trim(CelluleSelect) 
      res = CelluleSelect.Value 

      Debug.Print res 
      i = 0 
      Tableau() = Split(res, ".") 'découpe la chaine en fonction des points " " 
      'x = Tableau(i) 'le résultat de la fonction Split est stocké dans un tableau 

      For i = 0 To UBound(Tableau) 

       x = Tableau(1) 
       A = Tableau(0) 
       b = Tableau(2) 

       For j = 0 To Len(x) 

        Do While Len(x) < 6 
         x = "0" + x 
        Loop 

        Do While Len(b) < 4 
         b = "0" + b 
        Loop 

       Next j 

      Next i 

     Debug.Print x 

     For c = 0 To Len(ZoneEcire) 

      'define array: 
      arr = Array(A, x, b) 

      'using the vba Join function to join substrings contained in an array: 
        varJoin = Join(arr, ".") 

      'return string after joining the substrings: 
      Cells(c + 1, 1).Value = varJoin 
     Next c 
    Next 

End Sub 

回答

0

首先it'是因为你For c ... loop看到一只错字:

......你所定义的范围ZoneEc [R愤怒,但遍历ZoneEcire(不[R)。

使用Option Explicit可以防止这些错字,但是这会迫使您将所有其他变量也设为Dim。

在其下方,ZoneEcrire是一个范围,因此,你必须循环

For c = 0 To ZoneEcrire.Count 
0

谢谢你的答案,但我删除对于:) 这是没有必要的,最后我的代码如下所示:

子extractionMots() 昏暗的Tableau()作为字符串 昏暗我作为整数 昏暗RES作为字符串 昏暗ZoneTest作为范围 昏暗ZoneEcrire作为范围 昏暗CelluleS当选为靶场

Dim arr As Variant 
Dim varJoin As Variant 

Set ZoneTest = Range("C1:C16") 
Set ZoneEcrire = Range("A1:A16") 

For Each CelluleSelect In ZoneTest 

    ' Suppression des espaces superflus 
    CelluleSelect = Application.WorksheetFunction.Trim(CelluleSelect) 
    res = CelluleSelect.Value 

    Debug.Print res 
    i = 0 
    Tableau() = Split(res, ".") 'découpe la chaine en fonction des points " " 
    'x = Tableau(i) 'le résultat de la fonction Split est stocké dans un tableau 

    For i = 0 To UBound(Tableau) 

     x = Tableau(1) 
     A = Tableau(0) 
     b = Tableau(2) 

     For j = 0 To Len(x) 

      Do While Len(x) < 6 
       x = "0" + x 
      Loop 

      Do While Len(b) < 4 
       b = "0" + b 
      Loop 

      'define array: 
      arr = Array(A, x, b) 
      'using the vba Join function to join substrings contained in an array: 
      varJoin = Join(arr, ".") 

     Next j 
    Next i 

    'return string after joining the substrings:' 
    Cells(c + 1, 1).Value = varJoin 
    c = c + 1 
Next 

末次