私のMain
手順では、ユーザーが有効な入力を行ったかどうかを確認する簡単なifステートメントを作成します(ユーザーはデータのリストからプロジェクトの数を選択します。添付のスクリーンショットを参照してください)。そのために、プロジェクト番号がプロジェクトのリストに含まれていないかどうかを確認しています。それが当てはまる場合は、エラーメッセージが表示されます。そうでない場合は、他の多くのプロシージャが呼び出されます。
何らかの理由で、実行するとエラー2015が発生します。これは、正しいユーザーエントリであっても、ifステートメントが常にtrueであることを意味します。誰かが私にエラーを理解するのを手伝ってもらえますか?
- 入力されたプロジェクト番号は「IdSelect」という名前のセルで、「Invoice」というシートにあります
- この入力がチェックされるデータは、「入力」と呼ばれるシートにあります
- データは列Bに保存され、「ProjectList」と呼ばれます
以下のコード(注:5回貼り付けようとしましたが、今回は何らかの理由でフォーマットが機能しません-それが何であるかわかりませんか?コードは適切にフォーマットされています。表示が乱雑になって申し訳ありません。誰か教えていただければその問題は私が非常に感謝するかもしれません!)
Sub Main()
'Turn off screen updating
Application.ScreenUpdating = False
'Define variable for currently active cell to reactivate it afterwards
Dim OldActiveSheet As Object
Dim OldActiveCell As Object
Dim i As Integer
Dim ProjectList As Range
Set OldActiveSheet = ActiveSheet
Set OldActiveCell = ActiveCell
'If-statement to check whether project number is valid or not
Worksheets("Invoice").Activate
'Print to Immediate Window to check value - remove later
Debug.Print Range("IdSelect").Value
If IsError(Application.Match(Range("IdSelect").Value, "ProjectList", 0)) Then
'Print to Immediate Window to check value - remove later
Debug.Print Application.Match(Range("IdSelect").Value, Worksheets("Input").Range("ProjectList"), 0)
MsgBox "Invalid Choice: Project with this number does not exist!"
Exit Sub
Else
'Call procedures to execute
Call SortData
Call Count_Line_Items
Call Count_Total_Rows
Call Write_Services(ServCnt)
Call Write_Expenses(ExpCnt)
End If
'Reactivate previous active cell
OldActiveSheet.Activate
OldActiveCell.Activate
End Sub
「入力」シートのスクリーンショット: