我想寫一些代碼將一個特定的命名區域單元格的值複製到另一個命名區域中。將動態範圍文本複製到另一個範圍
的代碼如下:
If Not Intersect(Target, Target.Worksheet.Range("RaceDrop")) Is Nothing Then
If Range("RaceDrop") = Range("Races").Cells(1, 1) And Range("ClassDrop") = Range("Classes").Cells(1, 1) Or Range("Races").Cells(1, 1) And Range("ClassDrop") = Range("Classes").Cells(1, 2) Then
Range("OriginDrop") = Range("Origins").Cells(1, 1)
像 「範圍(」 X 「)=範圍(」 Y 「)每個語句給出了一個錯誤,IF語句中的細胞(X,X)」。並在結果。但是,如果我將它定義爲一個靜態語句,例如Range(「Races」)的「Human」。Cells(1,1)。雖然此解決方法有效,但我希望使所有引用都是動態的,以便更改或移動數據值所需的時間更少。單元格(1,1).Text例如,但它仍然不起作用。還有另外一種方法可以解決這個問題嗎?
編輯:我還要補充一點,我得到的錯誤是「對象的方法‘範圍’「_Worksheet失敗」
補充:
與單元格(引用)是因爲它們指向實際範圍,而不僅僅是一個單元格。有些引用大表,所以有時它會是Range(「Table」)。單元格(5,3),它並不總是指向1,1。我不確定用另一種方法引用特定的單元格在一張桌子上。
例如,一個比特i想要做的是: 範圍( 「OriginDrop」)=範圍( 「起源」)細胞(4,1)
你'If'聲明的這部分沒有任何意義:'...或區域( 「競賽」)單元(1,1)。 ..'只測試一個單元格而不與其他任何東西進行比較只會在該單元格保持一個布爾值時才起作用 - 也就是True或False – barrowc
它確實有意義。 IF X和A或X和B.代碼繼續測試IF Y和A或Y和B,還有X和C等等。所以如果它不測試兩個值,那麼它會在錯誤的部分結束。如果我只測試X,則會導致C被跳過,因爲它稍後會被檢查並且會有不同的結果。例如,當我第一次做這個時,我只做了IF X和A或B,IF Y和A或B,它總是會導致第一行,因爲它只是「或B」,所以Y和B永遠不會用過的。整個支票必須在那裏。相信我,這很有道理。 – user1558773
下面答案中的更新代碼將該部分更改爲'...或Range(「Races」)= Sheets(「Data」)。Range(「Races」)。Cells(1,1)and ...'Not確定如果你的問題有一個錯誤,但你沒有比較'Range(「Races」)。Cells(1,1)'在你的問題中提供的代碼中的任何內容 – barrowc