亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么范圍工作,而不是細胞?

為什么范圍工作,而不是細胞?

為什么范圍工作,而不是細胞?我試圖通過將值從一個范圍分配到另一個工作簿,將一些數據從一個工作簿轉移到另一個工作簿。當我使用普通范圍語法來指定目標范圍(“A1:B2”)時,我的代碼可以工作,但是如果我嘗試使用范圍,單元格語法(范圍(單元格(1,1),單元格(2,2)不能工作。我激活目標工作簿(ActiveWorkbook),并在源工作簿(ThisWorkbook)中運行代碼。此代碼適用于:ActiveWorkbook.Worksheets(1).Range("A1:B2").Value _= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value但是這個代碼沒有:ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value _= ThisWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value我得到的錯誤是運行時錯誤‘1004’:應用程序定義的或對象定義的錯誤。有誰知道為什么使用Cells對象會給我帶來問題,或者是否還有其他我不知道的問題?
查看完整描述

2 回答

?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

問題是Cells不合格,這意味著這些單元格引用的工作表根據代碼所在位置不同。任何時候你打電話RangeCellsRowsUsedRange或任何返回Range對象的內容,如果您不指定它在哪個表上,該工作表將根據以下內容分配:

  • 在工作表的類模塊中:不管什么是活動的
  • 在任何其他模塊中:ActiveSheet

你有資格Range引用,但是Cells引用是不限定的,很可能指向ActivSheet。就像寫作

ThisWorkbook.Worksheets(1).Range(ActiveSheet.Cells(1, 1), ActiveSheetCells(2, 2)).Value

當然,這沒有任何意義,除非ThisWorkbook.WorkSheets(1)碰巧是活動的。我經常喜歡使用WITH塊,以確保所有的內容都是完全合格的。

With Sheets(1)
    .Range(.Cells(1,1), .Cells(2,2)).Value = "something"End With

但是您引用了兩個不同的工作表,所以最好使用簡短的工作表變量,如下所示:

Dim shSource As WorksheetDim shDest As WorksheetSet shSource = ThisWorkbook.Worksheets(1)Set shDest = Workbooks("myBook").
Worksheets(1)shDest.Range(shDest.Cells(1, 1), shDest.Cells(2, 2)).Value = _
    shSource.Range(shSource.Cells(1, 1), shSource.Cells(2, 2)).Value

但實際上,如果要硬編碼Cells爭論,你可以像

shDest.Cells(1, 1).Resize(2, 2).Value = shSource.Cells(1, 1).Resize(2, 2).Value


查看完整回答
反對 回復 2019-06-24
?
繁星點點滴滴

TA貢獻1803條經驗 獲得超3個贊

不需要限定指令中的范圍shDest.Range(shDest.Cells(1, 1), shDest.Cells(2, 2)).Value = _ shSource.Range(shSource.Cells(1, 1), shSource.Cells(2, 2)).Value這也是正確的Range(shDest.Cells(1, 1), shDest.Cells(2, 2)).Value= _ Range(shSource.Cells(1, 1), shSource.Cells(2, 2)).Value

查看完整回答
反對 回復 2019-06-24
  • 2 回答
  • 0 關注
  • 589 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號