Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35887 / 76738 ←次へ | 前へ→

【46041】Re:36128について教えて下さい
お礼  おおいくん  - 07/1/21(日) 20:33 -

引用なし
パスワード
   ▼Hirofumi さん:
エラー出ずにうまくいきましたありがとうございました。
またの機会もよろしくお願いします。(^_^)

>>If vntField(i) Like vntKey Thenこの部分で
>>インデックスが範囲を超えていますと出てしまいました。
>>いかがでしょうか
>
>多分こう言うエラー出るなら、読み込むCsvに
>
>'探索を行う、ListBoxに表示する列数(CSV先頭から7列)
>Private Const clngColumns As Long = 7
>
>で指定しているだけの列が無いのだと思います
>例えば、上記でCsv先頭から7列を探索事に成ってますが?
>実際のCsvが6列なら、当然エラーに成ります
>
>以下を修正して下さい
>
>Private Sub CommandButton1_Click()
>
>  Dim i As Long
>  Dim j As Long
>  Dim dfn As Integer
>  Dim strBuff As String
>  Dim strRec As String
>  Dim blnMulti As Boolean
>  Dim vntField As Variant
>  Dim vntKey As Variant
>  Dim lngCount As Long '★追加
>  
>  'TextBox1に値が設定されて居なければ
>  If TextBox1.Text = "" Then
>    Beep
>    Exit Sub
>  Else
>    'TextBox1の値をKey文字とする
>    vntKey = Trim(TextBox1.Text)
>  End If
>  
>  'ListBoxをクリア
>  ListBox1.Clear
>  
>  'CsvファイルをOpen
>  dfn = FreeFile
>  Open vntFileName For Input As dfn
>
>  Do Until EOF(dfn)
>    '1行読み込み
>    Line Input #dfn, strBuff
>    '論理レコードに物理レコードを追加
>    strRec = strRec & strBuff
>    '論理レコードをフィールドに分割
>    vntField = SplitCsv(strRec, ",", , , blnMulti)
>    'フィールド内で改行が無い場合
>    If Not blnMulti Then
>      '実データ列数が予定データ数より小さい場合の処理
>      lngCount = UBound(vntField) '★追加
>      If lngCount > clngColumns - 1 Then '★追加
>        lngCount = clngColumns - 1 '★追加
>      End If '★追加
>      'Csv先頭から7列の中にKey文字が含まれるか検査
>'      For i = 0 To clngColumns - 1
>      For i = 0 To lngCount '★変更
>        '含まれている場合
>        If vntField(i) Like vntKey Then
>          Exit For
>        End If
>      Next i
>      'レコードにKey文字が有った場合
>'      If i <= clngColumns - 1 Then
>      If i <= lngCount Then '★変更
>        'ListBox1に項目を追加
>        With ListBox1
>          .AddItem vntField(0)
>'          For j = 1 To clngColumns - 1
>          For j = 1 To lngCount '★変更
>            .List(.ListCount - 1, j) = vntField(j)
>          Next j
>        End With
>      End If
>      strRec = ""
>    End If
>  Loop
>
>  Close #dfn
>
>End Sub

0 hits

【46027】36128について教えて下さい おおい 07/1/21(日) 15:31 質問
【46033】Re:36128について教えて下さい Kein 07/1/21(日) 17:58 回答
【46034】Re:36128について教えて下さい neptune 07/1/21(日) 18:14 回答
【46035】Re:36128について教えて下さい Hirofumi 07/1/21(日) 18:16 回答
【46036】Re:36128について教えて下さい おおい 07/1/21(日) 18:25 発言
【46038】Re:36128について教えて下さい Hirofumi 07/1/21(日) 19:09 回答
【46041】Re:36128について教えて下さい おおいくん 07/1/21(日) 20:33 お礼

35887 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free