2017-08-23 102 views
-1

我遇到更新单元格值的问题。以下是我正在运行的测试代码,以确保我可以更新单元格值。没有错误,但运行代码时单元格保持空白。Excel将不会将值输入到单元格

编辑:我不是很熟悉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 
+3

你不是**将值放入**单元格;你**从**单元格获取值。 – Jeeped

+0

你只是用新值覆盖变量。你永远不会实际更新值 – sourceCode

回答

4

您的任务没有正确完成。我会做的是:

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

等等...

+0

谢谢!只是把我的左右混合在这里,别介意我 – Harry

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 
0

看起来像你的当前值设置为一个变量,然后设置一个新值该变量并从未实际更新单元本身。

为了把代码插入到细胞就应该是这个样子

duet = 2 
Worksheets("Material PEC").Cells(2, 2).Value = deut 
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 

这节省了电池的原始值到所有双变量,然后允许你改变使用范围varaibles单元格的值。

相关问题