1

我只是不能给我正确的答案!我正在尝试将温度值从 1 个 excel 表 - “Design” - 导入到另一个 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
4

2 回答 2

0

您是要分别遍历 Design 和 Design2 吗?因为现在设置循环的方式,您将在 Design2 中迭代,同时仅使用 Design 中的一个值。K 将从 2 变为 19,而 J 保持在 4。然后当 J 移动到 5 时,K 将再次从 2 移动到 19。我不确定你的程序的设计,但那是你想要做的吗?

如果没有,您应该考虑将第二个和第三个循环组合成一个循环,以便两个工作表同时迭代。我可以看到您需要在“设计”上逐步执行 2,但是您可以通过简单地说 ((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

我有点在黑暗中拍摄,但我认为这可能是你的问题。事实上,在再次阅读你的问题之后,我很确定这是问题所在......

于 2012-12-10T14:32:10.213 回答
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
于 2012-12-10T14:06:36.820 回答