Excel VBA 質問スレッド №1931 (解決済)

split関数が動きません。

投稿者 : 初心者中の初心者     投稿日時 : 2024/06/13(Thu) 22:54:15     OS : 未指定     EXCEL : 未指定
下記のように記述したのですが、split関数がエラー9をはいて動きません。
どなたか原因が分かる方いらっしゃらないでしょうか。

Option Explicit

Dim i As Long, j As Long
Dim tmp As Variant


Sub 抽出()
  j = 1
  For i = 1 To 10
    If Cells(i, 1).Value Like "*HP*" Or Cells(i, 1).Value Like "*8P*" Or Cells(i, 1).Value Like "*10BASE*" Then
    Worksheets("Sheet1").Cells(i, 1).Copy
    Worksheets("Sheet1").Cells(j, 3).PasteSpecial _
                                      Paste:=xlPasteValues, _
                                      Operation:=xlNone, _
                                      SkipBlanks:=False, _
                                      Transpose:=False
    j = j + 1
    
    tmp = Split(Cells(j, 1), " ")
    Cells(j, 4) = tmp(0)
    Cells(j, 5) = tmp(1)
    Cells(j, 6) = tmp(2)
    End If
  Next
End Sub

また、エクセルは下記の通り入力してました。
A1~A10まで順に
HP×2×30
A2
A3
A4
HP×2×30
8P
A7
A8
A9
A10

スポンサーリンク
[返信 1] Re : split関数が動きません。
投稿者 : さんこう     投稿日時 : 2024/06/13(Thu) 23:39:28
>原因が分かる方いらっしゃらないでしょうか。

「セルに入力されているデータが違っている」か、

「コードが想定した動作になっていない」の

どちらか(あるいは両方)でしょう。

[返信 2] Re : split関数が動きません。
投稿者 : てらてら     投稿日時 : 2024/06/14(Fri) 05:44:10
こんにちは。

Split関数でエラーを回避したければ、返り値の配列の要素数を確認する必要があります。
また、Split関数の区切り文字は、" " でなく "x" ではないでしょうか?

ただ、それ以前にセルの指定が間違っていると思います。

Sub 抽出()
    Dim i As Long, j As Long
    Dim tmp As Variant
    
    j = 1
    For i = 1 To 10
        If Cells(i, 1).Value Like "*HP*" Or Cells(i, 1).Value Like "*8P*" Or Cells(i, 1).Value Like "*10BASE*" Then
            Worksheets("Sheet1").Cells(i, 1).Copy
            Worksheets("Sheet1").Cells(j, 3).PasteSpecial _
                                              Paste:=xlPasteValues, _
                                              Operation:=xlNone, _
                                              SkipBlanks:=False, _
                                              Transpose:=False
    
            tmp = Split(Worksheets("Sheet1").Cells(j, 3), "×")
            If UBound(tmp) >= 0 Then Worksheets("Sheet1").Cells(j, 4) = tmp(0)
            If UBound(tmp) >= 1 Then Worksheets("Sheet1").Cells(j, 5) = tmp(1)
            If UBound(tmp) >= 2 Then Worksheets("Sheet1").Cells(j, 6) = tmp(2)
            
            j = j + 1
        End If
    Next
End Sub

[返信 3] Re : split関数が動きません。
投稿者 : 初心者中の初心者     投稿日時 : 2024/06/14(Fri) 06:32:37
セルの指定が間違っていることに気づきませんでした。
ありがとうございます。

■[返信 2] てらてらさん(2024-06-14 05:44:10)の記事
> こんにちは。

> Split関数でエラーを回避したければ、返り値の配列の要素数を確認する必要があります。
> また、Split関数の区切り文字は、" " でなく "x" ではないでしょうか?

> ただ、それ以前にセルの指定が間違っていると思います。


当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-02 22:07:02 )
タイトルとURLをコピーしました