下記のような記述だと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ランキング
-
タンスとか、冷蔵庫とか 上から...
-
ヤマト運輸からくる荷物全てを...
-
運送会社が時間指定配達をして...
-
指定可燃物
-
太平洋フェリーの寝台等級のベ...
-
ネットショップを運営していま...
-
宅配便の伝票の貼り方
-
佐川急便では、荷物が配達予定...
-
「不在」の反対語を教えてください
-
「不在としております」は正し...
-
書留便などの不在預かり期間の7...
-
宅配便の依頼主が本人なのですが
-
Amazonの配達員が不在票を入れ...
-
重さ50キロ以上の荷物を運んで...
-
配達員は来ているけど不在票が...
-
配達員について…これって普通で...
-
配達員さんの事が気になってい...
-
ヤマト運輸で配達時間を指定し...
-
佐川急便で配達完了と書いてあ...
-
レターパックライトが戻ってき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タンスとか、冷蔵庫とか 上から...
-
ヤマト運輸からくる荷物全てを...
-
簡易書留の事ですが日にち指定 ...
-
SDカードのルートパスを選択し...
-
まんだらけ通販の時間指定は本...
-
エクセル VBAで文章にある複数...
-
必着という言葉をどう取るか?
-
こんばんは 教えてください 400...
-
<title></title>(サイトタイト...
-
数式を教えてください!!! 0...
-
指定可燃物
-
wordのハイパーリンクで、リン...
-
アクセスIfブロックに対応するE...
-
ネットショップを運営していま...
-
晴空塔
-
届かなかった宅急便・・・これ...
-
佐川って最大何時までなら届け...
-
ヤフーショッピングでメール便...
-
永続版Wordは縦書き段組・行数...
-
宅配便の伝票の貼り方
おすすめ情報