2012-12-10 84 views
1

我只是不能给我正确的答案!我正在尝试从1 excel表格 - “设计”导入温度值 - 另一个Excel表格 - “Design2”。如果组合框的文本是“C” - 温度值应该保持原样。如果组合框打开“K”,则应将273.15添加到温度值以将其转换为开尔文。Excel VBA循环将最后一个循环的答案作为每个循环的答案抛出

这部分工作正常。

但是,该程序为“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

你意思是通过设计和设计2 seperately迭代?因为现在您的循环已经设置好了,您只需使用Design中的一个值即可遍历Design2。当J停留在4时,K将从2到19,然后当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 

我在黑暗中那种投篮,但我认为这可能是你的问题。事实上,在再次阅读您的问题后,我很确定这是问题所在......

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 
+0

我修好了!多谢你们。 – Chane

+0

@Chane - >为了所有来者的利益,如果您将两个答案中的一个标记为您选择的答案,如果他们确实帮助您获得了您的答案,那将是非常好的。或者,也可以使用您的解决方案发布自己的答案。说我固定它,但没有显示如何,可能导致马水,但没有教他如何喝!最适合你...... –