根据语句中的值,我想在单元格中放置一个值。 但是因为我需要重用这个语句,所以我会创建一个单元格目的地 作为一个变量,所以我可以很容易地改变它。
我生成了以下代码,但这似乎不起作用。有什么想法吗?
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"
答案 0 :(得分:0)
以下对代码的调整应该解决它。根据您选择首先分配位置的方式,必须将字符串传递给rel_cell
的值,该值也是范围。这还需要Range
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
答案 1 :(得分:0)
我不太确定我是否正确理解了这个问题,因为上述答案似乎走的是不同的路线。然而,每当我在编码环境中听到“重用”时,我立即想到将代码推送到单独的函数或子函数中。然后,您可以轻松地重复使用此代码。
在你的情况下,这意味着这样的事情:
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
另一个认为我(个人)试图避免多个ElseIf
。 case
方法是为了这个目的而创建的,并且(对我来说)更清晰。所以,我也在你的代码中更改了那部分(供你考虑)。