2016-06-13 217 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方法是为此目的而创建的,对我来说更清晰易读。所以,我也在你的代码中改变了这个部分(供你考虑)。

相关问题