我只是不能给我正确的答案!我试图将温度值从1 excel表 - “设计” - 导入到另一个excel表 - “Design2”。如果组合框的文本是“C” - 温度值应该是原样。如果组合框处于“K”状态,则应将273.15添加到温度值以将其转换为开尔文。
这部分工作正常。
然而,该程序为“Design2”表上的每个温度提供相同的值 - 即使“设计”表上的温度不同。
有人可以帮忙吗???
这是我的代码:
Private Sub OK_Click()
'Temperature
Dim Temperaturei As Double
Dim j As Integer
Dim k As Integer
For i = 201 To 218
For j = 4 To 36 Step 2
For k = 2 To 19
Temperaturei = Sheets("Design").Cells(36, j).Value
Sheets("Design2").Cells(k, 2).Value = Temperaturei
Select Case Sheets("Diagram").TemperatureUnit.Text
Case "°C"
Temperaturei = Temperaturei
Case "K"
Temperaturei = Temperaturei + 273.15
End Select
Next k
Next j
Next i
End Sub
答案 0 :(得分:0)
如果你移动线怎么办:
Sheets("Design2").Cells(k, 2).Value = Temperaturei
到
之前 Next k
这样,您可以在代码更改后将Temperaturei
结果写入Design2表。它现在写的方式,从Design
表单中提取后,它不会在任何地方写入更改后的值。
所以,完整的,你的代码看起来像这样:
Private Sub OK_Click()
'Temperature
Dim Temperaturei As Double
Dim j As Integer
Dim k As Integer
For i = 201 To 218
For j = 4 To 36 Step 2
For k = 2 To 19
'pick up value
Temperaturei = Sheets("Design").Cells(36, j).Value
'alter it
Select Case Sheets("Diagram").TemperatureUnit.Text
Case "°C"
Temperaturei = Temperaturei
Case "K"
Temperaturei = Temperaturei + 273.15
End Select
'write back to sheet
Sheets("Design2").Cells(k, 2).Value = Temperaturei
Next k
Next j
Next i
End Sub
答案 1 :(得分:0)
你是否意味着单独遍历Design and Design2?因为您现在正在设置循环的方式,所以您只需使用Design中的一个值来迭代Design2。当J保持在4时,K将从2变为19然后当J移动到5时,K将再次从2变为19。我不确定你的程序的设计,但是你正在尝试做什么?
如果没有,您应该考虑将第二个和第三个循环组合成一个循环,以便两个工作表同时迭代。我可以看到你需要在“设计”上一步一步,但是你可以通过简单地说((k * 2)+ 2)来达到同样的效果。
示例:
Dim j as Integer
For k = 2 to 19
j = (k*2) 'If k = 2, j = 4, if k = 3, j = 6, etc, etc.
[Do stuff]
End For
我有点在黑暗中射击,但我认为这可能是你的问题。事实上,在再次阅读你的问题之后,我很确定这是问题......