Excel不会将值输入到单元格中

时间:2017-08-23 15:08:57

标签: excel vba excel-vba

我在更新单元格值时遇到问题。下面是我正在运行的测试代码,以确保我可以更新单元格值。没有错误,但运行代码时单元格仍为空。

编辑:我不太熟悉vba语法,所以我更新了下面的代码,以显示我正在尝试做的事情。基本上我想找到一个与某种材料相对应的值,然后对找到的所有值求和。我知道你说我不是在输入价值,而是在拉它们。我相信我正在初始化变量。如何输入值?

Sub MaterialSort()

Dim deut As Double
Dim am241 As Double
Dim pu238 As Double
Dim pu239 As Double
Dim pu240 As Double
Dim pu241 As Double
Dim np237 As Double
Dim u238 As Double
Dim u235 As Double
Dim u233 As Double
Dim am243 As Double


deut = Worksheets("Material PEC").Cells(2, 2).Value
am241 = Worksheets("Material PEC").Cells(3, 2).Value
pu238 = Worksheets("Material PEC").Cells(4, 2).Value
pu239 = Worksheets("Material PEC").Cells(5, 2).Value
pu240 = Worksheets("Material PEC").Cells(6, 2).Value
pu241 = Worksheets("Material PEC").Cells(7, 2).Value
np237 = Worksheets("Material PEC").Cells(8, 2).Value
u238 = Worksheets("Material PEC").Cells(9, 2).Value
u235 = Worksheets("Material PEC").Cells(10, 2).Value
u233 = Worksheets("Material PEC").Cells(11, 2).Value
am243 = Worksheets("Material PEC").Cells(12, 2).Value


For j = 2 To 82 Step 8
For i = 3 To 70

    k = j + 5

If Not IsError(Worksheets("Master PEC").Cells(i, j)) Then

    If Worksheets("Master PEC").Cells(i, j) = "Deuterium" Then

        deut = Worksheets("Master PEC").Cells(i, k).Value + deut

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Am-241" Then

        am241 = Worksheets("Master PEC").Cells(i, k).Value + am241

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Pu-238" Then

        pu238 = Worksheets("Master PEC").Cells(i, k).Value + pu238

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Pu-239" Then

        pu239 = Worksheets("Master PEC").Cells(i, k) + pu239

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Pu-240" Then

        pu240 = Worksheets("Master PEC").Cells(i, k) + pu240

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Pu-241" Then

        pu241 = Worksheets("Master PEC").Cells(i, k) + pu241

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Np-237" Then

        np237 = Worksheets("Master PEC").Cells(i, k) + np237

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Dep. U-238" Then

        u238 = Worksheets("Master PEC").Cells(i, k) + u238

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Enr. U-235" Then

        u235 = Worksheets("Master PEC").Cells(i, k) + u235

    ElseIf Worksheets("Master PEC").Cells(i, j) = "U-233" Then

        u233 = Worksheets("Master PEC").Cells(i, k) + u233

    ElseIf Worksheets("Master PEC").Cells(i, j) = "Am-243" Then

        am243 = Worksheets("Master PEC").Cells(i, k) + am243

    End If

End If
Next
Next
End Sub

4 个答案:

答案 0 :(得分:4)

您的作业未正确完成。我会做的是:

Dim deut As Double
deut = 2
Worksheets("Material PEC").Cells(2, 2).Value = deut

依旧......

答案 1 :(得分:0)

这应该有效

Sub MaterialSort()

Dim deut As Double
Dim am241 As Double
Dim pu238 As Double
Dim pu239 As Double
Dim pu240 As Double
Dim pu241 As Double
Dim np237 As Double
Dim u238 As Double
Dim u235 As Double
Dim u233 As Double
Dim am243 As Double

deut = 2
am241 = 2
pu238 = 1
pu239 = 3
pu240 = 3
pu241 = 4
np237 = 5
u238 = 12
u235 = 4
u233 = 4
am243 = 5

Worksheets("Material PEC").Cells(2, 2).Value = deut
Worksheets("Material PEC").Cells(3, 2).Value = am241
Worksheets("Material PEC").Cells(4, 2).Value = pu238 
Worksheets("Material PEC").Cells(5, 2).Value = pu239
Worksheets("Material PEC").Cells(6, 2).Value = pu240
Worksheets("Material PEC").Cells(7, 2).Value = pu241 
Worksheets("Material PEC").Cells(8, 2).Value = np237
Worksheets("Material PEC").Cells(9, 2).Value = u238
Worksheets("Material PEC").Cells(10, 2).Value = u235
Worksheets("Material PEC").Cells(11, 2).Value = u233
Worksheets("Material PEC").Cells(12, 2).Value = am243


End Sub

答案 2 :(得分:0)

看起来您正在将当前值设置为变量,然后将新值设置为该变量,并且从不实际更新单元本身。

要将代码放入单元格,它应该看起来像这样

duet = 2
Worksheets("Material PEC").Cells(2, 2).Value = deut

答案 3 :(得分:0)

您在问题中发布的代码不是为单元格指定值。在第一个块中,您将从单元格中分配变量值,在第二个块中,您将重新分配它们。

您需要使用范围和双变量而不是双变量才能执行我认为您想要执行的操作。

Sub MaterialSort()

Dim deut As Double
Dim am241 As Double
Dim pu238 As Double
Dim pu239 As Double
Dim pu240 As Double
Dim pu241 As Double
Dim np237 As Double
Dim u238 As Double
Dim u235 As Double
Dim u233 As Double
Dim am243 As Double

Dim deut_rng As Range
Dim am241_rng As Range
Dim pu238_rng As Range
Dim pu239_rng As Range
Dim pu240_rng As Range
Dim pu241_rng As Range
Dim np237_rng As Range
Dim u238_rng As Range
Dim u235_rng As Range
Dim u233_rng As Range
Dim am243_rng As Range

set deut_rng = Worksheets("Material PEC").Cells(2, 2)
set am241_rng = Worksheets("Material PEC").Cells(3, 2)
set pu238_rng = Worksheets("Material PEC").Cells(4, 2)
set pu239_rng = Worksheets("Material PEC").Cells(5, 2)
set pu240_rng = Worksheets("Material PEC").Cells(6, 2)
set pu241_rng = Worksheets("Material PEC").Cells(7, 2)
set np237_rng = Worksheets("Material PEC").Cells(8, 2)
set u238_rng = Worksheets("Material PEC").Cells(9, 2)
set u235_rng = Worksheets("Material PEC").Cells(10, 2)
set u233_rng = Worksheets("Material PEC").Cells(11, 2)
set am243_rng = Worksheets("Material PEC").Cells(12, 2)



deut = Worksheets("Material PEC").Cells(2, 2).Value
am241 = Worksheets("Material PEC").Cells(3, 2).Value
pu238 = Worksheets("Material PEC").Cells(4, 2).Value
pu239 = Worksheets("Material PEC").Cells(5, 2).Value
pu240 = Worksheets("Material PEC").Cells(6, 2).Value
pu241 = Worksheets("Material PEC").Cells(7, 2).Value
np237 = Worksheets("Material PEC").Cells(8, 2).Value
u238 = Worksheets("Material PEC").Cells(9, 2).Value
u235 = Worksheets("Material PEC").Cells(10, 2).Value
u233 = Worksheets("Material PEC").Cells(11, 2).Value
am243 = Worksheets("Material PEC").Cells(12, 2).Value


deut_rng.value = 2
am241_rng.value = 2
pu238_rng.value = 1
pu239_rng.value = 3
pu240_rng.value = 3
pu241_rng.value = 4
np237_rng.value = 5
u238_rng.value = 12
u235_rng.value = 4
u233_rng.value = 4
am243_rng.value = 5

End Sub

这会将单元格的原始值保存到所有双变量中,然后允许您使用范围变量更改单元格中的值。