1

私は私に正しい答えを与えるためにこれをすることはできません!1つのExcelシート(「Design」)から別のExcelシート(「Design2」)に温度の値をインポートしようとしています。コンボボックスのテキストが「C」の場合、温度値はそのままである必要があります。コンボボックスが「K」の場合、温度値に273.15を追加して、ケルビンに変換する必要があります。

この部分は正常に機能します。

ただし、「デザイン」シートの温度が異なっていても、プログラムは「デザイン2」シートのすべての温度に同じ値を与えます。

誰か助けてもらえますか?

これが私のコードです:

    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を別々に繰り返すつもりですか?ループの設定方法は、Designの1つの値のみを使用しながら、Design2を反復処理するためです。Jが4に留まっている間、Kは2から19に移動します。次に、Jが5に移動すると、Kは再び2から19に移動します。あなたのプログラムのデザインはわかりませんが、それはあなたがやろうとしていることですか?

そうでない場合は、2番目と3番目のループを1つのループに結合して、両方のシートが同時に繰り返されるようにすることを検討する必要があります。「デザイン」を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 に答える