1

このコードに問題があります。D25セルの値に基づいての値F25が変化するようにしようとしています。私はVBAでコードを作成しました(これが実際に最善の方法であるかどうかはわかりません)424 runtime error: Object Required. 誰かが私を正しい方向に向けてもらえますか?

Sub Storage_vesel_Controle()

   Sheets("NSR Form").Select

   If Range("D25") = "1" Then Range("F25").Select.Value = "0"

   If Range("D25") = "2" Then Range("F25").Select.Value = ".95"

   If Range("D25") = "3" Then Range("F25").Select.Paste = ".98"

End Sub

また、コードを「常に実行中」にするために何を追加する必要がありますか...ループ内ですか?

4

2 に答える 2

2

上記の私のコメントに加えて、私は回答を投稿するつもりはありませんでしたが、私があなたの注意を引くと思うことはほとんど見られず、コメントはそれほど多くのテキストに対応していません.

を使用してシートを選択するのではなく、シートを直接操作することをお勧め.Selectします (以下のコードを参照)。このリンクも参照してください。

Sub Storage_vesel_Controle()
    With Sheets("NSR Form")
        Select Case .Range("D25").Value
           Case 1: .Range("F25").Value = 0
           Case 2: .Range("F25").Value = 0.95
           Case 3: .Range("F25").Value = 0.98
        End Select
    End With
End Sub

編集

あなたの編集について。イベントを使用Worksheet_Changeして、F25 の値が自動的に更新されるようにするか、VBA 以外のソリューションが必要な場合は、単純に式を使用します。F25

興味のある方はこちらWorksheet_Changeをご覧ください。それ以外の場合は、このような単純な式で十分です:)F25

=IF(D25=1,0,IF(D25=2,0.95,IF(D25=3, 0.98,"")))
于 2013-03-27T18:23:58.027 に答える
1

少しきれいにしてください。ステートメントを使用するSelect Caseと、複数の If/Then ステートメントよりも簡単に操作できます。

Sub Storage_vesel_Controle()
    With Sheets("NSR Form")
        .Activate  '<this line is not actually necessary unless you want to be on the sheet.
        Select Case .Range("D25").Value
            Case 1
                .Range("F25").Value = 0
            Case 2
                .Range("F25").Value = 0.95
            Case 3
                .Range("F25").Paste = 0.98
            Case Else
                'do nothing, or, modify as needed
        End Select
    End With
End Sub
于 2013-03-27T18:23:28.617 に答える