2017-02-05 66 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

這是因爲細胞()接受號碼作爲其行索引和列索引參數,同時具有聲明i5i3變體和從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

相關問題