VBA Excelに関するしつもんです。
ddd = "23:53"
のような文字列変数があり、
これをハイフンで分割してLong型の配列に格納したいのですが
一度、
eee = Split(ddd,":")
としてから
dim fff() as long
redim fff(ubound(eee)
for i = 1 to ubound(eee)
fff(i) = eee(i)
next i
のようにして、別で用意した配列に格納しなおす必要がありますか?
直接Split関数でLong配列に入れる方法があれば教えてください。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
そのような関数を自前で作成するのが最善の策かと思います。
以下は、Long型の配列にSplit結果を格納する関数:MySplitの実装例です。
Sub hyoujiは結果を表示する関数です。(参考用)
-----------------------------------------------------
Option Explicit
Public Sub sample()
Dim result1() As Long
Dim result2() As Long
Dim result3() As Long
result1 = MySplit("23:53:12345678901888", ":")
Call hyouji(result1)
result2 = MySplit("1:23:456.7", ":")
Call hyouji(result2)
result3 = MySplit("aaa", ":")
Call hyouji(result3)
End Sub
Public Function MySplit(str As String, dlm As String) As Long()
Dim i As Long
Dim strArray() As String
Dim vals() As Long
strArray = Split(str, dlm)
For i = 0 To UBound(strArray)
ReDim Preserve vals(i)
On Error GoTo MYSPLIT_ERR
vals(i) = Val(strArray(i))
Next
MySplit = vals
Exit Function
MYSPLIT_ERR:
MsgBox ("実行時エラー:" & Err.Number & " " & Err.Description & vbCr & "不正データ=[" & strArray(i) & "]")
vals(i) = 0
Resume Next
End Function
Public Sub hyouji(vals() As Long)
Debug.Print "-------------"
Dim i As Long
For i = 0 To UBound(vals)
Debug.Print vals(i)
Next
End Sub
--------------------------------------------------
以下、実行結果です。
-------------
23
53
0
-------------
1
23
457
-------------
0
ーーーーーーーーーーーーーー
尚、Long型に格納できないような数字(例では12345678901888)
等が、指定されると、エラーが発生しますので、その場合は、
メッセージBOXにエラー表示し、0を格納するようにしています。
もし、メッセージBOXの表示が不要であれば、その行をコメントアウトしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 改行ごとに行を追加し、数量を分割 4 2023/07/11 16:39
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
array関数で格納した配列の型を変更する
Visual Basic(VBA)
-
split関数で区切り文字がない場合
Visual Basic(VBA)
-
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
-
4
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
配列の参照渡しで型が一致しません。
Visual Basic(VBA)
-
8
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
9
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
10
VBで引数にDictionaryオブジェクトを使用する方法
Visual Basic(VBA)
-
11
VBAで、セル(Range)のオブジェクトが取得できない
Excel(エクセル)
-
12
Excelのシート上のShapeにイベントは設定できる?
Excel(エクセル)
-
13
Offsetで可視セルだけを移動したい。
Excel(エクセル)
-
14
VBA ユーザーフォームのChangeイベントを停止したい
Access(アクセス)
-
15
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
16
VBAの日付チェックでオーバーフローを回避したい。
Access(アクセス)
-
17
VBAでの[]
Visual Basic(VBA)
-
18
MIN関数で空白セルを無視したいのですが
その他(Microsoft Office)
-
19
マクロでセルの右から2番目の文字を取得する方法を教えてください
Excel(エクセル)
-
20
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表にフィルターをかけ、絞った...
-
エクセルで、絶対値の平均を算...
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
DataSetから、DataTableを取得...
-
iniファイルのキーと値を取得す...
-
【VBA】 動的な変数(定数)の指定
-
Excel オートフィルタのリスト...
-
Excelのオートフィルタで抽出し...
-
Split関数でLong配列に格納する...
-
Datatableへの代入
-
EXCEL VBA 2次元配列に格納さ...
-
エクセルの行の削除を配列で高...
-
C言語で、変数名を引数として渡...
-
VBA 配列に格納した値の平均の...
-
配列がとびとびである場合の書き方
-
VBA Dictionaryオブジェクトの...
-
VB6・Split関数・連続した空白...
-
.NET - 配列変数を省略可能の引...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
array関数で格納した配列の型を...
-
表にフィルターをかけ、絞った...
-
エクセルで、絶対値の平均を算...
-
配列がとびとびである場合の書き方
-
[VBA]改行入りのセルの値を配列...
-
Excel オートフィルタのリスト...
-
DataSetから、DataTableを取得...
-
iniファイルのキーと値を取得す...
-
配列のSession格納、及び取得方...
-
エクセルでエラーを無視して一...
-
エクセル 条件を指定した標準...
-
Dictionaryを使い4つの条件の一...
-
読み込みで一行おきに配列に格納
-
.NET - 配列変数を省略可能の引...
-
For Nextマクロの高速化につい...
-
SUMPRODUCT関数を用いた最小値
-
VB6.0 ファイルの一括読込み
おすすめ情報