Excel sheet
のデータをarray
に格納しようとしています。 Excel VBA Application.Matchエラー処理とメッセージング
私が使用するコード:
Sub StoreData()
Dim Data() As String
'Count number of Line in Sheet1
Sheet1_size = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count
'Array to store data
ReDim Data(1 To Sheet1_size - 1, 1 To 6) As String
'storing data into array
For i = 1 To Sheet1_size - 1
With Worksheets("Sheet1")
Data(i, 1) = .Cells(i + 1, Application.Match("Name", .Rows(1), 0))
Data(i, 2) = .Cells(i + 1, Application.Match("Sex", .Rows(1), 0))
Data(i, 3) = .Cells(i + 1, Application.Match("Age", .Rows(1), 0))
Data(i, 4) = .Cells(i + 1, Application.Match("Nationality", .Rows(1), 0))
Data(i, 5) = .Cells(i + 1, Application.Match("License", .Rows(1), 0))
Data(i, 6) = .Cells(i + 1, Application.Match("Hand", .Rows(1), 0))
End With
Next i
End Sub
sheet1
は、上記のように見えるとき、すべてが完璧に動作 データは次のようになります。
ただし、列の順序と数は、sheet1
で毎回異なる場合があります。たとえば、Name Age Nationality
またはName License Hand Sex Age Nationality
またはNationality Age
などです。この表は人によって入力されるため、変数を含むことを忘れる可能性があります。
私はにしたいのですがどのようにこのエラーの代わりに欠けている列の名前とmessage/message box
を示すことです。欠落している列がいくつかある場合は、すべての欠落している名前をメッセージしたいと思います。
エラーを無効にすることは、画面にメッセージが配信されないため解決策ではありません。どんな解決策ですか?ここで
それははるかに簡単ではないでしょうにちょうど '薄暗いデータとしてVariant'してから設定し'データ=ワークシート( "Sheet1")。範囲( "A1")。CurrentRegion'? – Ralph
配列内の変数の存在を修正する必要があります。また、これは列方向の不足についてユーザーにどのようにメッセージするかという問題を解決しません – AK47