将单元格值存储为变量

时间:2016-06-13 13:49:41

标签: excel vba excel-vba

根据语句中的值,我想在单元格中放置一个值。 但是因为我需要重用这个语句,所以我会创建一个单元格目的地 作为一个变量,所以我可以很容易地改变它。

我生成了以下代码,但这似乎不起作用。有什么想法吗?

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 个答案:

答案 0 :(得分:0)

以下对代码的调整应该解决它。根据您选择首先分配位置的方式,必须将字符串传递给rel_cell的值,该值也是范围。这还需要Range

的Set语句
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

另一个认为我(个人)试图避免多个ElseIfcase方法是为了这个目的而创建的,并且(对我来说)更清晰。所以,我也在你的代码中更改了那部分(供你考虑)。