
下記のような記述だと1つ目の「天気」の文字列は取得できても
2つ目の「晴れ」の文字列を取得することができません。
どうすれば2つ目の文字列を取得することができるのでしょうか?
※「<」と「>」で挟まれている間の文字列を取得したいです。
※「<」と「>」が何組あるかは不明です。
Dim str0, str1, str2 As Variant
Dim 指定1, 指定2 As Variant
str0 = ”今日の<天気>は<晴れ>です。
指定1 = ”<”
指定2 = ”>”
str1 = Mid(str0, Len(指定1) + InStr(1, str0, 指定1)
str2 = Left(str1, InStr(1, str1, 指定2) - 1)
使用OS:Windows 8
使用ソフト:Microsoft Excel 2007
ご存知の方がおられましたらご回答をよろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
> ※「<」と「>」が何組あるかは不明です。
っていうなら、str1、str2・・・・ じゃダメですよね。
際限なく str3・・・・str100 とか宣言するわけにもいかないし。
Dim str0 As Variant
Dim str1() As Variant
Dim stIdx As Integer
Dim 指定1 As Variant
Dim 指定2 As Variant
Dim ptA As Integer
Dim ptZ As Integer
指定1 = "<"
指定2 = ">"
str0 = "今日の<天気>は<晴れ>です。<雨>や<曇り>だったり<大荒れの嵐>もあるかも。"
ReDim str1(Int(Len(str0) / 2)) As Variant
ptZ = 1
stIdx = 0
Do Until InStr(ptZ, str0, 指定1) = 0
stIdx = stIdx + 1
ptA = InStr(ptZ, str0, 指定1)
ptZ = InStr(ptZ + 1, str0, 指定2)
str1(stIdx) = Mid(str0, ptA + 1, ptZ - ptA - 1)
MsgBox (str1(stIdx))
Loop
解読はご自身でトライしてみてください。
No.1
- 回答日時:
こういうときは 私なら、InStr関数を使うかな。
あんまりスマートなコード例じゃないかもしれないけど、解読してみて下さい。
Dim str0, str1, str2 As Variant
Dim 指定1, 指定2 As Variant
Dim ptA As Integer
Dim ptZ As Integer
str0 = "今日の<天気>は<晴れ>です。"
指定1 = "<"
指定2 = ">"
ptA = InStr(1, str0, 指定1)
ptZ = InStr(1, str0, 指定2)
str1 = Mid(str0, ptA + 1, ptZ - ptA - 1)
ptA = InStr(ptZ, str0, 指定1)
ptZ = InStr(ptZ + 1, str0, 指定2)
str2 = Mid(str0, ptA + 1, ptZ - ptA - 1)
MsgBox (str1)
MsgBox (str2)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Excel(エクセル) LEFT関数で文字数を指定しないで取りだす方法 7 2023/06/30 09:49
- Visual Basic(VBA) ワークシートチェンジで曜日を表示する方法 1 2023/03/04 21:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【競馬】指定1頭ー指定4頭ー...
-
エクセルほぼ初心者です。知り...
-
Amazonで置き配指定しているの...
-
ヤマトでクール便を時間指定2回...
-
SDカードのルートパスを選択し...
-
日本郵便での荷物受け取り。 指...
-
タンスとか、冷蔵庫とか 上から...
-
position:relative でこの後PX...
-
郵便為替について とある学校の...
-
必着という言葉をどう取るか?
-
宅配便の伝票の貼り方
-
佐川急便では、荷物が配達予定...
-
Amazonの配達員が不在票を入れ...
-
「不在としております」は正し...
-
配達員は来ているけど不在票が...
-
大至急お願いします 宅配業者か...
-
ウーバーの配達員につまみ食い...
-
宅配便の依頼主が本人なのですが
-
ヤマトの配達員がインターホン...
-
ヤマト運輸で配達時間を指定し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タンスとか、冷蔵庫とか 上から...
-
SDカードのルートパスを選択し...
-
必着という言葉をどう取るか?
-
ヤマトでクール便を時間指定2回...
-
セルを飛び越えて範囲指定する場合
-
簡易書留の事ですが日にち指定 ...
-
ネットショッピングして 今日届...
-
時間を指定したクセに、いざお...
-
いつもお世話になります。
-
地方自治体の天然記念物
-
SNDVOL32.EXEをインストールし...
-
遠音別岳原生自然環境保全地域...
-
届かなかった宅急便・・・これ...
-
指定可燃物
-
佐川急便では、荷物が配達予定...
-
宅配便の伝票の貼り方
-
ヤマトの配達員がインターホン...
-
ウーバーの配達員につまみ食い...
-
ウーバー配達員で満足度39%の人...
-
Amazonの配達員が不在票を入れ...
おすすめ情報