2016-01-26 54 views
0

我尝试将数组定义为单元格和字符串组合的范围。 我得到错误1004:_Worksheet的方法,范围失败将字符串插入愤怒错误1004 vba

我的代码:

Sub report() 
' 
' Macro 

' Déclaration des variables 
Dim myPath As String 
Dim myFile As String 
Dim Datereport As String 
Dim myArray() As Integer 
Dim LastRow As Long 
Dim LastColumn As Long 
Dim wb As Workbook 
Dim sht As Worksheet 
Dim Letter As String 

'Optimisation de la Macro Speed 
Application.ScreenUpdating = True 
Application.EnableEvents = True 

'Définition de la date de rapport 
Datereport = Workbooks("Rapports").Worksheets("Sommaire").Range("B6") 


'Trouve les fichiers qui on la date associée 
myPath = "Z:\7. Personnel\Florian\Projet_BDC\Test\Consolidations\" 
myFile = Dir(myPath & "*.xlsx") 


While myFile <> "" 
    If InStr(myFile, Datereport) > 0 Then 
    Set wb = Workbooks.Open(Filename:=myPath & myFile) 
    Set sht = wb.Worksheets(1) 
    LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 
    LastColumn = sht.Cells(1, sht.Columns.Count).End(xlToLeft).Column 
    ReDim myArray(1 To LastRow, 1 To LastColumn) 
    Letter = Col_Letter(LastColumn) 
    myArray = sht.Range("A1:Letter & LastRow") 
    End If 
    myFile = Dir() 
Wend 

End Sub 

在此行中的子结束:

myArray = sht.Range("A1:Letter & LastRow") 

我不明白为什么的范围是错误的。字母是O,最后一行是15 所以它应该引用范围(“A1:O15”)。 我想动态地做到这一点,所以我不能只把细胞。

谢谢

回答

1

你离得很近。变化:

sht.Range("A1:Letter & LastRow") 

到:

sht.Range("A1:" & Letter & LastRow) 

变量需要从字符串删除,然后再连接在单独

或者你可以跳过试图找到列字母和使用.Cells

myArray = sht.Range(sht.Cells(1,1),sht.Cells(LastRow,LastColumn)).Value 

您需要将myarray声明为variant ch顶部声明在顶部:

Dim MyArray as Variant 
+0

好的很好,谢谢。现在我有错误13不兼容...你能帮助我吗?请 我觉得这是一个尺寸错误..我的数组是6行15列,我的范围也是如此? – Florian

+0

@Florian查看编辑 –

+0

同样的问题,错误13 :( – Florian