2013-11-15 48 views
2

現在我打字:設置爲一個單元格的引用,然後修改其內容

ActiveCell.Offset(-1, 0) = ActiveCell.Offset(-1, 0) + 1 

我倒是大大寧願設置單元格的引用,並使用它,而不是打字ActiveCell.Offset每時間。我試着將它設置爲一個名爲sick範圍:

Dim sick As Range 
Set sick = ActiveCell.Offset(-1, 0) 

但是當我說sick = sick + 1沒有奏效。它說這是一種類型不匹配。爲什麼?

+0

您嘗試添加1的單元格中可能存在文本。 – Sam

回答

2

是的這是因爲生病的類型範圍。您可以使用值屬性這樣訪問它的值:

sick.value = sick.value + 1 
+0

謝謝!我感到很蠢,但現在起作用了。我只是不知道我不得不說病態。感謝您的快速回復。 – user2994436

+0

Hm ...'.Value'是'Range'類型的默認屬性,所以這應該完全等同於'sick = sick + 1'。這不能成爲它工作的原因; @ user2994436必須無意中改變了使其工作的其他內容。 –

+0

@ Jean-FrançoisCorbett我知道這一點,但我也注意到,在某些情況下,由於某種原因,如果未明確調用,VBA將不會評估爲「Value」屬性。 – ApplePie

0

可能的原因是,你的sick單元包含一個非數字類型的數據,可能是一個字符串(即文本)。

我試過你的代碼; sick = sick + 1對我來說工作得很好 - 只要sick單元格包含數字數據(或VBA可以解釋的數據)。但是,如果sick包含一個字符串,我能夠重現您的類型不匹配錯誤。

注意.Value是範圍類型的默認屬性,因此

sick = sick + 1 

是完全等同於

sick.Value = sick.Value + 1 

這兩條線可以互換使用。有些人喜歡後者,因爲它更明確你在做什麼。其他人是前者,因爲它更簡潔。這完全是一個品味問題。

相關問題