Excel VBA 質問スレッド №2114 (解決済)
ByRef引数の型が一致しません。とコンパイルエラーになってしまいます。どう修正したら良いでしょうか。
投稿者 : 青 投稿日時 : 2025/05/15(Thu) 19:15:03 OS : Windows 11 EXCEL : Excel 2019
Sub CSVから売上集計表へ転記() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(1) Dim csvFiles As Variant Dim i As Long: i = 3 csvFiles = Application.GetOpenFilename("CSVファイル (*.csv), *.csv", MultiSelect:=True) If Not IsArray(csvFiles) Then Exit Sub Dim filePath As Variant Dim lines As Variant For Each filePath In csvFiles lines = ReadCSVLines(filePath) Dim parts As Variant parts = Split(lines(1), ",") If UBound(parts) >= 7 Then ws.Cells(i, "A").value = Replace(parts(7), """", "") ' H2(日付) End If ws.Cells(i, "H").value = GetCSVValue(lines, 5) ' E6 ws.Cells(i, "I").value = GetCSVValue(lines, 32) ' E33 ws.Cells(i, "O").value = GetCSVValue(lines, 18) ' E19 ws.Cells(i, "N").value = GetCSVValue(lines, 22) ' E23 ws.Cells(i, "M").value = GetCSVValue(lines, 33) ' E34 Dim totalK As Double Dim j As Long For j = 19 To 21: totalK = totalK + GetCSVValue(lines, j): Next j For j = 23 To 31: totalK = totalK + GetCSVValue(lines, j): Next j totalK = totalK + GetCSVValue(lines, 34) ws.Cells(i, "K").value = totalK Dim totalS As Double For j = 43 To 48: totalS = totalS + GetCSVValue(lines, j): Next j ws.Cells(i, "S").value = totalS Dim totalW As Double For j = 50 To 54: totalW = totalW + GetCSVValue(lines, j): Next j ws.Cells(i, "W").value = totalW i = i + 1 Next filePath MsgBox "すべてのCSVからの転記が完了しました!", vbInformation End Sub Function ReadCSVLines(filePath As String) As Variant Dim lines() As String Dim line As String Dim i As Long Dim f As Integer: f = FreeFile() Open filePath For Input As #f Do Until EOF(f) Line Input #f, line ReDim Preserve lines(i) lines(i) = line i = i + 1 Loop Close #f ReadCSVLines = lines End Function Function GetCSVValue(ByVal lines As Variant, rowIndex As Long) As Double On Error GoTo ErrHandler If rowIndex > UBound(lines) Then Exit Function Dim parts() As String parts = Split(lines(rowIndex), ",") If UBound(parts) >= 4 Then GetCSVValue = val(Replace(parts(4), """", "")) End If Exit Function ErrHandler: GetCSVValue = 0 End Function
スポンサーリンク
[返信 1] Re : ByRef引数の型が一致しません。とコンパイルエラーになってしまいます。どう修正したら良いでしょうか。
投稿者 : てらてら 投稿日時 : 2025/05/16(Fri) 05:46:05
こんにちは。
CSVから売上集計表へ転記()の filePath が Variant なのに対して、
呼び出し側の ReadCSVLines の引数の filePath が String になっているのが原因です。
Function ReadCSVLines(filePath As String) As Variant
を
Function ReadCSVLines(filePath As Variant) As Variant
とすれば、このエラーは回避できます。
こんにちは。
CSVから売上集計表へ転記()の filePath が Variant なのに対して、
呼び出し側の ReadCSVLines の引数の filePath が String になっているのが原因です。
Function ReadCSVLines(filePath As String) As Variant
を
Function ReadCSVLines(filePath As Variant) As Variant
とすれば、このエラーは回避できます。
[返信 2] Re : ByRef引数の型が一致しません。とコンパイルエラーになってしまいます。どう修正したら良いでしょうか。
投稿者 : 青 投稿日時 : 2025/05/16(Fri) 19:24:22
■[返信 1] てらてらさん(2025-05-16 05:46:05)の記事
> こんにちは。
>
> CSVから売上集計表へ転記()の filePath が Variant なのに対して、
> 呼び出し側の ReadCSVLines の引数の filePath が String になっているのが原因です。
>
>
> Function ReadCSVLines(filePath As String) As Variant
> を
> Function ReadCSVLines(filePath As Variant) As Variant
>
> とすれば、このエラーは回避できます。
>
てらてらさん
返信ありがとうございます。
指摘の通りで見事に動作しました。
大変助かりました。ありがとうございます。
■[返信 1] てらてらさん(2025-05-16 05:46:05)の記事
> こんにちは。
>
> CSVから売上集計表へ転記()の filePath が Variant なのに対して、
> 呼び出し側の ReadCSVLines の引数の filePath が String になっているのが原因です。
>
>
> Function ReadCSVLines(filePath As String) As Variant
> を
> Function ReadCSVLines(filePath As Variant) As Variant
>
> とすれば、このエラーは回避できます。
>
てらてらさん
返信ありがとうございます。
指摘の通りで見事に動作しました。
大変助かりました。ありがとうございます。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-04 16:48:47 )