質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%

Q&A

解決済

4回答

1402閲覧

excel vbaでの文字列比較について

yoimata

総合スコア12

0グッド

0クリップ

投稿2016/03/26 12:00

excel2013でxlsファイルを互換モードで開いてvbaのコードを実行しております。
If StrComp(Doc.all(k + n).tagName, "TD", vbTextCompare) = 0 Then

Else
Exit Do
End If

というコードで、TDタグであるのにもかかわらずExit Doのところに処理が進んでしまいます。どうしたらよいでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kaz.Suenaga

2016/03/26 13:48

If の前の行に Debug.Print Doc.all(k + n).tagName とかやってイミディエイトウィンドウに表示される文字列を確認することはできますか
yoimata

2016/03/26 22:31

それをやったところ、TDと表示されます。
kaz.Suenaga

2016/03/27 14:30 編集

もう1つ、 Exit Do の直前に Debug.Print Doc.all(k + n).tagName, StrComp(Doc.all(k + n).tagName, "TD", vbTextCompare) を挟んでみると、イミディエイトになんと表示されますか。
guest

回答4

0

自己解決

結局、Internet Explorerオブジェクトのgobackメソッドが誤動作していたようなのでそれを使わないようにソースを変更しました。

投稿2016/03/28 12:55

yoimata

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

結局、Internet Explorerオブジェクトのgobackメソッドが誤動作しているみたいなのでそれを使わないようにソースを変更しました。

投稿2016/03/28 12:53

yoimata

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Debug.Print Doc.all(k + n).tagNameでTDと表示されるにもかかわらず、"TD"との比較で失敗しているとなると、制御文字などが混じっている可能性もありますね。

一度、文字列長を測ってみてください。
Debug.Print Len(Doc.all(k + n).tagName) = Len("TD")
Debug.Print LenB(Doc.all(k + n).tagName) = LenB("TD")

投稿2016/03/27 10:55

thom.jp

総合スコア686

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

そもそもDoc.all(k + n).tagNameで"TD"が返ってきていると思い込んでいませんか?

vb.net

1Dim t as string 2t = Doc.all(k + n).tagName 3If StrComp(t, "TD", vbTextCompare) = 0 Then 4 ' 5Else 6 MsgBox(t) 7 Exit Do 8End If

投稿2016/03/26 20:27

dojikko

総合スコア3939

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問