2016-10-19 129 views
0

我正在應的數據傳送到名爲「皮斯托亞」不同的片的宏並且是這樣的碼:對象變量或與塊變量未設置91 VBA

Sub SetCounter(ByVal counter As Double, ByVal product As String) 
Dim ws As Worksheet 
On Error Resume Next 
Sheets("pistoia").Activate 
Set ws = ActiveWorkbook.Sheets("pistoia") 
On Error GoTo 0 
    If ws Is Nothing Then 
     MsgBox "pistoia sheet not found" 
    Else 
     If ws.Name = ActiveWorkbook.ActiveSheet.Name Then 
      Dim index_destRow As Integer, index_destColumn As Integer, search_product As Range 
      Rows(2).Find(What:="Nome commerciale", LookAt:=xlWhole, LookIn:=xlValues).Offset(2).Select 
     Else 
      MsgBox "pistoia sheet found but is inactive" 
     End If 
    End If 
End Sub 

誤差在提高該行:「行(2)。找到(什麼:=」Nome commerciale「,LookAt:= xlWhole,LookIn:= xlValues).Offset(2)。選擇」,我認爲錯誤是由於激活新的工作表,因爲在前面的宏中,「在起始頁上」我在導致錯誤的行中執行相同的操作。有什麼建議麼?

+2

在'行(2)'前加'ws.'。將對象分配給對象可確保該調用作用於所需的指定對象。另一件事是確保「Nome commerciale」存在於你正在尋找的地方。 –

+0

我試過用ws。但是沒有任何變化......並且是的,我已經檢查了第2行 –

+0

如果你在命令前添加'debug.print'並將'.Select'改爲'.Value'。錯誤是否持續?或者它是否在即時窗口中返回一個值? –

回答

2

這表明我的價值沒有被發現,因此它試圖選擇一些不存在的東西。例如。設置範圍變量來檢查找到的值。通過查找,還可以指定一些其他參數,以防它們不符合您的預期。

Sub SetCounter(ByVal counter As Double, ByVal product As String) 

    Dim ws As Worksheet, index_destRow As Integer, index_destColumn As Integer, search_product As Range 
    Dim rFind As Range 

    On Error Resume Next 
    Sheets("pistoia").Activate 
    Set ws = ActiveWorkbook.Sheets("pistoia") 
    On Error GoTo 0 

    If ws Is Nothing Then 
     MsgBox "pistoia sheet not found" 
    Else 
     If ws.Name = ActiveWorkbook.ActiveSheet.Name Then 
      Set rFind = ws.Rows(2).Find(What:="Nome commerciale", LookAt:=xlWhole, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False) 
      If Not rFind Is Nothing Then 
       rFind.Offset(2).Select 
      Else 
       msgbox "Value not found" 
      End If 
     Else 
      MsgBox "pistoia sheet found but is inactive" 
     End If 
    End If 

    End Sub 
+0

請問您可以擴展一下 - 也許是一個如何糾正它的例子(可能是Select語句並檢查參考_is不是什麼_)... –

+0

是的,請參閱上面的內容。 – SJR

+0

我使用佈局策略現在我得到錯誤448命名參數未找到,但在工作表第2行和第1列「pistoia」只有文本「Nome commerciale」... –

相關問題