2013-12-05 3 views
0

Мой код ищет номера столбцов столбцов с определенными заголовками, видит, сколько времени файл и генерирует диапазоны на основе этого. Например:Excel VBA: Каков тип переменной для описания диапазона?

Set wb1 = ActiveWorkbook 
    Set ws1 = wb1.Worksheets("Sheet1") 

    With ws1 

    FinalColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column 
    FinalRow = .Range("B" & .Rows.Count).End(xlUp).Row 
    For j = 1 To FinalColumn 
        .Cells(1, j).Value = "FolderId" Then 
          FolderId_column = j 
        End If 
    Next j 
    Total_Folder_Column = FinalColumn + 1 
    range_FolderId_Fixed = .Cells(2, FolderId_column).Address & ":" & .Cells(FinalRow, FolderId_column).Address 
    range_FolderId_Cell = .Cells(2,FolderId_column).Address(RowAbsolute:=False,ColumnAbsolute:=False) 
    range_Total_Folder_Fixed = .Cells(2, Total_Folder_Column).Address & ":" & .Cells(FinalRow, Total_Folder_Column).Address 

    .Range(range_Total_Folder_Fixed).Formula = "=SUMIF(" & range_FolderId_Fixed & "," & range_FolderId_Cell & "," & range_Total_Folder_Fixed & ")" 

    End With 

Мой вопрос заключается в том, что я не знаю, как определить DIM переменных, как range_FolderId_Cell.

Являются ли эти типы строк или диапазонов или что-то еще?

Dim range_FolderId_Fixed As ??? 
Dim range_FolderId_Cell As ??? 

Я предполагаю, что

Dim FinalRow As Long 

Спасибо.

+0

Dim range_FolderId_Fixed As Range? – majjam

+0

Dim range_FolderId_Fixed As String ...! –

+0

@ bamie9l Я надеялся на «Дим .... Диапазон!» :) – Amatya

ответ

3

В вашей ситуации вы должны использовать эту переменную декларацию.

Dim range_FolderId_Fixed as String 

Наконечник, если вы не знаете, какой тип переменных вы должны использовать, вы всегда можете проверить это следующим образом:

'Delcare as variable 
Dim range_FolderId_Fixed as Variant 
' after you set the value in your code 
range_FolderId_Fixed = ... 
'check automatic assignment in this way 
Debug.Print TypeName(range_FolderId_Fixed) 

в результате вы получите String в вашей ситуации в открывшемся окне. Затем вы можете вернуться к своему коду и сменить Variable на String.

+0

is Dim myvar As Variable отличается от Dim myvar As Variant? – Amatya

+1

моя ошибка, должна быть 'как вариант' - я только что улучшил свой код. –

+0

Я просто запустил его, и я не видел сообщений от отладки. Где появятся сообщения? – Amatya

1

Dim range_FolderId_Fixed как строковые

+0

Большое спасибо за ваш ответ! – Amatya

+0

Добро пожаловать! –

Смежные вопросы