2016-06-13 123 views
0

根據聲明中的值,我希望將值放入單元格中。 但是,因爲我需要重複使用此語句,我將創建一個單元格目標 作爲變量,所以我可以輕鬆地更改它。將單元格值存儲爲變量

我生產了下面的代碼,但這似乎不工作。有什麼想法嗎?

dim test_number as Integer 
test_number = 3 

    'This value could be changed 
rel_cell = Sheets("risk_cat_2").Cells(4, 6) 

If test_number >= 3 Then 
      rel_cell = "Category 1" 
Elseif test_number >= 3 Then 
      rel_cell = "Category 2" 
+2

對於初學者來說,你的「If」和「Elseif」測試是相同的(test_number> = 3),所以「Category 2」決不會達到 – elmer007

+1

'Dim rel_cell As Range' then'Set rel_cell = Sheets(「risk_cat_2 「).Cells(4,6)' –

回答

0

以下對代碼的調整應該修復它。根據您選擇首先分配位置的方式,必須將字符串傳遞給rel_cell的值,該值也是範圍。這也需要對範圍

dim test_number as Integer, rel_cell As Range 
test_number = 3 

'This value could be changed 
Set rel_cell = Sheets("risk_cat_2").Cells(4, 6) 

If test_number >= 3 Then 
     rel_cell.Value = "Category 1" 
Else 
     rel_cell.Value = "Category 2" 
End If 
0

我不太清楚,如果我理解正確的問題是上面的回答似乎走了不同的路線Set語句。然而,無論何時我在編碼的上下文中聽到「重用」,我都會立即想到將代碼推入單獨的函數或子函數中。然後,您可以輕鬆地重用此代碼。

在你的情況下,這意思是這樣的:

Option Explicit 

Sub tmpTest() 

Dim rel_cell As String 
Dim test_number As Integer 

test_number = 3 

Call EvaluateIt(test_number, Sheets("risk_cat_2").Cells(4, 6)) 

End Sub 

Sub EvaluateIt(test_number As Integer, cell As Range) 

Dim rel_cell As String 

Select Case test_number 
    Case Is >= 3 
     rel_cell = "Category 1" 
    Case Is >= 0 
     rel_cell = "Category 2" 
    Case Is < 0 
     'some other category 
    Case Else 
     rel_cell = "(unknown)" 
End Select 

cell.Value2 = rel_cell 

End Sub 

其他想我(個人)儘量避免多個ElseIfcase方法是爲此目的而創建的,對我來說更清晰易讀。所以,我也在你的代碼中改變了這個部分(供你考慮)。

相關問題