2014-11-18 2 views
0

, поскольку я являюсь полным newb в VBA, у меня есть вопрос.VBA - разделите значение в столбце

У меня есть столбец целых чисел, который я хочу разделить на 60. Столбец «X». Вот мой код:

For Each element In Worksheets("parsed").Range("X1:X" & MaxRows).Cells 
    element.Value = element.Value/60 
Next 

Но я всегда получаю «несоответствие типа». Что я делаю неправильно?

+0

Какой тип элемента? – cronos2546

+0

Ну, я не знаю. Разве это не ячейка, если я делаю для каждого цикла на ячейках? – mglisty

ответ

5

Во-первых, убедитесь, что вы объявили element в качестве диапазона. Во-вторых, удалите .cells из вашего цикла. Тогда это эффективно говорит в своем заявлении For each cell in the range петли так:

Sub SomeProc() 

Dim element As Range 
Dim MaxRows As Long 

With Worksheets("parsed") 
    MaxRows = .Cells(.Rows.Count, "X").End(xlUp).Row 
End With 

For Each element In Worksheets("parsed").Range("X1:X" & MaxRows) 
    If IsNumeric(element.Value) Then 
     element.Value = element.Value/60 
    End If 
Next 

End Sub 

Я сделал предположение о том, что MaxRows предназначен в качестве последней строки в столбце X рабочего листа.

+0

У меня все еще есть несоответствие типа. Что может быть причиной? – mglisty

+1

Какая строка является несоответствием данных? – Gareth

+0

На element.Value = element.Value/60 – mglisty

-1
Dim CurRow As Long 
For CurRow = 1 to MaxRows 
    element = Worksheets("parsed").Range("X" & CurRow).Value/60 
    'Do something with element for example Range(Destination).Value = element 
Next CurRow