2017-02-05 5 views
1

Я написал код, который поможет мне обработать данные дальше. Но я не знаю, почему я не могу выбрать ячейки. Я получаю сообщение об ошибкеОшибка времени выполнения '1004': Определенная определением объекта или объектная ошибка

Ошибка выполнения «1004»:

приложения или объекта, определенные ошибки

Пожалуйста осмотрите мой код ниже

Sub CommandButton1_Click() 
Dim day_a, day_b As Date, point As String, east_a, north_a, height_a, height_b, east_b, north_b As Double 
Dim i1, i2, i3, i4, i5, i6, i7 As Variant 

    i1 = 1: i2 = 1 

    Worksheets("INPUT").Cells(i1, i2).Select 

    Do While Not IsEmpty(ActiveCell) 
     Worksheets("INPUT").Cells(i1, i2).Activate 
     If ActiveCell.Value = "Id" Then 
      i3 = Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1) 
      MsgBox (cellidrow) 
     ElseIf ActiveCell.Value = "Nord" Then 
      i4 = Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1) 
     ElseIf ActiveCell.Value = "Øst" Then 
      i5 = Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1) 
     ElseIf ActiveCell.Value = "S_OBJID" Then 
      i6 = Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1) 
     ElseIf ActiveCell.Value = "DATO" Then 
      i7 = Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1) 
     Else 
     End If 

     i2 = i2 + 1 
    Loop 

    MsgBox (i3 & i4 & i5 & i6 & i7) 

    Sheets("INPUT").Cells(i5, i3).Select 
    MsgBox (ActiveCell.Value) 

End Sub 

Большое спасибо за вашу помощь !

+0

Обратите внимание, что в вашем объявлении 'Dim' заявление, любой переменной, которая не сопровождается', как var_type' будет объявлен как тип 'Variant'. Итак, в вашей первой строке 'Dim',' day_b', 'point' и' north_b' будут иметь тип 'Date',' String' и 'Double'. Все остальные переменные в этой строке будут иметь тип 'Variant'. Возможно, это не то, что вы хотите. –

ответ

1

это потому, что Клетки() принимает номер как его индекс строки и индекс столбца параметры, а объявив i5 и i3 как вариант и назначил им значение из Split() функции, они сталиString набрали значение

вы должны затем преобразовать их в Long следующим

i3 = CLng(Split(ActiveCell.Address(columnAbsolute:=True, ReferenceStyle:=xlR1C1), "C")(1)) 

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

Option Explicit 

Sub CommandButton1_Click() 
    Dim i3 As Long, i4 As Long, i5 As Long, i6 As Long, i7 As Long 
    Dim cell As Range 

    With Worksheets("INPUT") 
     For Each cell In .Range("A1", .Cells(1, .Columns.Count).End(xlToLeft)) 
      Select Case cell.Value 
       Case "Id" 
        i3 = cell.Column 
       Case "Nord" 
        i4 = cell.Column 
       Case "Øst" 
        i5 = cell.Column 
       Case "S_OBJID" 
        i6 = cell.Column 
       Case "DATO" 
        i7 = cell.Column 
       Case Else 
      End Select 
     Next 
     MsgBox (i3 & i4 & i5 & i6 & i7) 
     .Cells(i5, i3).Select 
     MsgBox (ActiveCell.Value) 
    End With 
End Sub 
+0

Большое спасибо за хорошее объяснение. Код работает! –

+0

добро пожаловать. вы можете затем отметить ответ как принятый. Спасибо! – user3598756

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

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