簡體   English   中英

VBA Excel 2016-運行時錯誤'1004'

[英]VBA Excel 2016 - Run-time error '1004'

我正在嘗試基於母版上的5個下拉列表(使用數據驗證)將代碼從一張紙復制和粘貼到同一工作簿中的母版的代碼,並為此編寫了以下代碼,但是每次我收到運行時1004錯誤,不知道如何解決,有沒有辦法解決?

Private Sub GO_Click()
Worksheets("Dashboard").Select
If Worksheets("Dashboard").Range(B3) = "National Gallery" And 
Worksheets("Dashboard").Range(B4) = "unframed" And 
Worksheets("Dashboard").Range(B7) = "Product Costings" And 
Worksheets("Dashboard").Range(B5) = "N/A" And 
Worksheets("Dashboard").Range(B6) = "N/A" Then
Worksheets("(7b)").Activate
Worksheets("(7b)").Range(A8, F23).Copy_
Destination = Worksheets("Dashboard").Range(D11)

Else: MsgBox ("No Data")

End If

End Sub

復制行后,將以下內容放入:

Worksheets("Dashboard").activate
range("D11").pasteSpecial xlpastevalues 'or just paste depends on your need

別忘了將“放在range(” x“)內希望它能起作用

Jean-Pierre Oosthuizen是正確的。 在范圍內添加逗號將為您解決1004問題。 現在,以下代碼將為您工作。

Private Sub GO_Click()
Worksheets("Dashboard").Activate
If Worksheets("Dashboard").Range("B3") = "National Gallery" And _
Worksheets("Dashboard").Range("B4") = "unframed" And _
Worksheets("Dashboard").Range("B7") = "Product Costings" And _
Worksheets("Dashboard").Range("B5") = "N/A" And _
Worksheets("Dashboard").Range("B6") = "N/A" Then
Worksheets("(7b)").Activate
Worksheets("(7b)").Range("A8", "F232").Copy_
Destination = Worksheets("Dashboard").Range("D11")

Else: MsgBox ("No Data")

End If

End Sub

除非B3B4等是全局變量,否則您要求的是.Range(null)無效。 正如@ Jean-PierreOosthuizen所說 ,您需要.Range("B3")

同樣,除非您有一個名為 “(7b)”的Worksheets("(7b)")包括括號“()”),否則對Worksheets("(7b)")引用將接下來失敗。


獎金代碼審查:

正確的縮進工作-它使你的代碼更具可讀性! 未來的您(從現在開始一個星期便會如此)將感謝您的光臨。 Rubberduck VBA *將為您做到這一點,並指出許多其他可以使您的代碼更好的東西,例如:

  • 消除Worksheets("Dashboard").Select出色地完成了顯式指定所有工作表引用的工作,因此您無需.Select一個。
  • 消除Worksheets("(7b)").Activate -與上面相同
  • 消除多行Else: MsgBox ("No Data") ,並用兩行代碼替換它-更具可讀性。

*我還不是Rubberduck項目的貢獻者,但是我是一個快樂的用戶,並且從他們那里學到了很多關於更好編碼的知識

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM