◇-エクセルのオブジェクト内の文字列検索についてです。-がみかみ(5/31-19:52)No.3701 ┗Re:エクセルのオブジェクト内の文字列検索についてです。-Discovery(6/1-00:05)No.3718 ┗Re:エクセルのオブジェクト内の文字列検索についてです。-がみかみ(6/1-12:03)No.3756 ┗動作未確認-o2ka(6/1-14:38)No.3760 ┗直リンクダメですね-o2ka(6/1-14:52)No.3763 ┗Re:直リンクダメですね-がみかみ(6/1-15:12)No.3765 ┗リンクのクリックが駄目-o2ka(6/1-15:19)No.3767 ┗Re:リンクのクリックが駄目-がみかみ(6/1-15:25)No.3769 ┗Re:リンクのクリックが駄目-がみかみ(6/1-15:36)No.3771 ┣Re:リンクのクリックが駄目-Rei(6/1-21:02)No.3782 ┣Re:リンクのクリックが駄目-Discovery(6/2-00:39)No.3800 ┗バージョンアップ-o2ka(6/2-01:29)No.3805 ┗インデントが飛んじゃった-o2ka(6/2-01:34)No.3807 ┗Re:インデントが飛んじゃった-がみかみ(6/3-09:32)No.3918 ┗自分では-がみかみ(6/3-09:36)No.3919
3701 | エクセルのオブジェクト内の文字列検索についてです。 | がみかみ | 5/31-19:52 |
OS名:Windows98 パソコン名: ソフト名: こんばんわ。 エクセルではセル内の普通の文字列に関しては検索可能でありますが、 オブジェクト(例えばテキストボックス)内の 文字列検索はできるのでしょうか? 自分でもヘルプ等で確認しましたが、 いまいちできるのかどうか、定かでありません。 プラグインなどのソフト等使えば検索可能になったりするのかどうか、 ご存知の方教えてください。お願いします。 |
3718 | Re:エクセルのオブジェクト内の文字列検索についてです。 | Discovery | 6/1-00:05 |
記事番号3701へのコメント がみかみさんは No.3701「エクセルのオブジェクト内の文字列検索についてです。」で書きました。 >OS名:Windows98 >パソコン名: >ソフト名: >こんばんわ。 >エクセルではセル内の普通の文字列に関しては検索可能でありますが、 >オブジェクト(例えばテキストボックス)内の >文字列検索はできるのでしょうか? >自分でもヘルプ等で確認しましたが、 >いまいちできるのかどうか、定かでありません。 >プラグインなどのソフト等使えば検索可能になったりするのかどうか、 >ご存知の方教えてください。お願いします。 > VBA使えば可能かな? |
3756 | Re:エクセルのオブジェクト内の文字列検索についてです。 | がみかみ | 6/1-12:03 |
記事番号3718へのコメント Discoveryさんは No.3718「Re:エクセルのオブジェクト内の文字列検索についてです。」で書きました。 >がみかみさんは No.3701「エクセルのオブジェクト内の文字列検索についてです。」で書きました。 >>OS名:Windows98 >>パソコン名: >>ソフト名: >>こんばんわ。 >>エクセルではセル内の普通の文字列に関しては検索可能でありますが、 >>オブジェクト(例えばテキストボックス)内の >>文字列検索はできるのでしょうか? >>自分でもヘルプ等で確認しましたが、 >>いまいちできるのかどうか、定かでありません。 >>プラグインなどのソフト等使えば検索可能になったりするのかどうか、 >>ご存知の方教えてください。お願いします。 >> > >VBA使えば可能かな? 自分ではマクロ組めないので検索してそういうマクロを見つけてきました。 でも下記のマクロだと、 シート内においてオブジェクトがテキストボックスのみだと 検索可能なんですが、矢印などのオブジェクトがシート内にあると、 そこを検索で見に行ったときに、 実行時エラー'438': オブジェクトは、このプロパティーまたはメソッドをサポートしていません。 とエラーが出てしまいます。 このエラーを回避して矢印などのオブジェクトがシート内に存在しても、 引き続いて検索可能になるようにするにはどうしたらいいんでしょうか? どうか教えてください。お願い致します。 Sub Test3() Dim shp As Object Dim s As String On Error GoTo RAST s = InputBox("検索する文字列を入力して下さい") If s = "" Then Exit Sub For Each shp In ActiveSheet.DrawingObjects If InStr(1, shp.Text, s, 1) Then shp.Select MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub End If RAST: Next shp MsgBox "「" & s & "」は見つかりませんでした。" End Sub |
3760 | 動作未確認 | o2ka | 6/1-14:38 |
記事番号3756へのコメント 「If InStr(1, shp.Text, s, 1)」でエラーが発生しているんですよね? http://www.geocities.co.jp/SiliconValley-SanJose/9236/subdoc2/0214.htm を参考にすると、 On Error Resume Next > If InStr(1, shp.Text, s, 1) Then > > shp.Select > > MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" > > If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub > > End If On Error GoTo 0 こんな感じになるのかな? 動作は未検証(確認できる環境が無い)なので、ホントにこれで動くのかは知りません。 http://www.gld.mmtr.or.jp/~kunosk/home/excel/excel6.htm 命令の意味はこちらでご確認ください。 キーワード「VBA "On Error"」でinternet上を検索すれば、他の手法もみつかります。 |
3763 | 直リンクダメですね | o2ka | 6/1-14:52 |
記事番号3760へのコメント >http://www.geocities.co.jp/SiliconValley-SanJose/9236/subdoc2/0214.htm >を参考にすると、 直リンク駄目ですね。 http://www.geocities.co.jp/SiliconValley-SanJose/9236/ から入って、「初級編」の「データ操作」で一番上の 「0214 重複しないユニークなデータを取り出したい。 (No.0159〜No.161でやりましたが、究極?の方法)」 です。 |
3765 | Re:直リンクダメですね | がみかみ | 6/1-15:12 |
記事番号3763へのコメント o2kaさんは No.3763「直リンクダメですね」で書きました。 >>http://www.geocities.co.jp/SiliconValley-SanJose/9236/subdoc2/0214.htm >>を参考にすると、 > >直リンク駄目ですね。 > >http://www.geocities.co.jp/SiliconValley-SanJose/9236/ >から入って、「初級編」の「データ操作」で一番上の >「0214 重複しないユニークなデータを取り出したい。 >(No.0159〜No.161でやりましたが、究極?の方法)」 >です。 >「If InStr(1, shp.Text, s, 1)」でエラーが発生しているんですよね? その通りです。 すいません。会社からだとそこのページは規制がかかっているようで 見れません。貼り付けてもらえませんか? 私は >キーワード「VBA "On Error"」でinternet上を検索すれば、他の手法もみつかります。 こちらを試して見ます。 |
3767 | リンクのクリックが駄目 | o2ka | 6/1-15:19 |
記事番号3765へのコメント >>http://www.geocities.co.jp/SiliconValley-SanJose/9236/ > >すいません。会社からだとそこのページは規制がかかっているようで >見れません。貼り付けてもらえませんか? http://www.geocities.co.jp/SiliconValley-SanJose/9236/ をコピーして、Ieを開いたアドレス欄に貼り付けてください。 # 何で、ジャンプだとダメなんだろう? |
3769 | Re:リンクのクリックが駄目 | がみかみ | 6/1-15:25 |
記事番号3767へのコメント o2kaさんは No.3767「リンクのクリックが駄目」で書きました。 >>>http://www.geocities.co.jp/SiliconValley-SanJose/9236/ >> >>すいません。会社からだとそこのページは規制がかかっているようで >>見れません。貼り付けてもらえませんか? > >http://www.geocities.co.jp/SiliconValley-SanJose/9236/ > >をコピーして、Ieを開いたアドレス欄に貼り付けてください。 > ># 何で、ジャンプだとダメなんだろう? ごめんなさい。回答した直後に貼り付けて出来ました。 改定後の全ソースはこういうことですよね。 テストしてきます。 Sub Test3() Dim shp As Object Dim s As String On Error GoTo RAST s = InputBox("検索する文字列を入力して下さい") If s = "" Then Exit Sub For Each shp In ActiveSheet.DrawingObjects On Error Resume Next If InStr(1, shp.Text, s, 1) Then shp.Select MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub End If On Error GoTo 0 RAST: Next shp MsgBox "「" & s & "」は見つかりませんでした。" End Sub |
3771 | Re:リンクのクリックが駄目 | がみかみ | 6/1-15:36 |
記事番号3769へのコメント がみかみさんは No.3769「Re:リンクのクリックが駄目」で書きました。 >o2kaさんは No.3767「リンクのクリックが駄目」で書きました。 >>>>http://www.geocities.co.jp/SiliconValley-SanJose/9236/ >>> >>>すいません。会社からだとそこのページは規制がかかっているようで >>>見れません。貼り付けてもらえませんか? >> >>http://www.geocities.co.jp/SiliconValley-SanJose/9236/ >> >>をコピーして、Ieを開いたアドレス欄に貼り付けてください。 >> >># 何で、ジャンプだとダメなんだろう? > >ごめんなさい。回答した直後に貼り付けて出来ました。 > >改定後の全ソースはこういうことですよね。 >テストしてきます。 > >Sub Test3() > > Dim shp As Object > > Dim s As String > >On Error GoTo RAST > > s = InputBox("検索する文字列を入力して下さい") > > If s = "" Then Exit Sub > > For Each shp In ActiveSheet.DrawingObjects > > On Error Resume Next > If InStr(1, shp.Text, s, 1) Then > > shp.Select > > MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" > > If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub > > End If > On Error GoTo 0 > >RAST: > > Next shp > > MsgBox "「" & s & "」は見つかりませんでした。" > >End Sub > > テスト結果を提出いたします。 エラーではおちなくなったのですが、 矢印オブジェクトやテキストボックスオブジェクト全てにおいて 見つかりました。と出ててしまってバージョンダウンしてしまいました。 うううぅ。 |
3782 | Re:リンクのクリックが駄目 | Rei | 6/1-21:02 |
記事番号3771へのコメント はじめまして。 がみかみさんは No.3771「Re:リンクのクリックが駄目」で書きました。 >> If InStr(1, shp.Text, s, 1) Then の行でエラーが発生することを期待して >>On Error GoTo RAST この宣言により、ジャンプしようとするのならば >> On Error Resume Next この行は不要でしょう? |
3800 | Re:リンクのクリックが駄目 | Discovery | 6/2-00:39 |
記事番号3771へのコメント がみかみさんは No.3771「Re:リンクのクリックが駄目」で書きました。 >がみかみさんは No.3769「Re:リンクのクリックが駄目」で書きました。 >>Sub Test3() >> >> Dim shp As Object >> >> Dim s As String >> >>On Error GoTo RAST >> >> s = InputBox("検索する文字列を入力して下さい") >> >> If s = "" Then Exit Sub >> >> For X = 1 To ActiveSheet.DrawingObjects.Count If ActiveSheet.DrawingObjects(X).Name = "Text Box 1" Then >> >> >> If InStr(1, shp.Text, s, 1) Then >> >> shp.Select >> >> MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" >> >> If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub >> >> End If >> End If >> On Error GoTo 0 >> >>RAST: >> >> Next X >> >> MsgBox "「" & s & "」は見つかりませんでした。" >> >>End Sub >> >> >テスト結果を提出いたします。 >エラーではおちなくなったのですが、 >矢印オブジェクトやテキストボックスオブジェクト全てにおいて >見つかりました。と出ててしまってバージョンダウンしてしまいました。 >うううぅ。 > で限定したいのか???例えばテキストボックスとか この場合1つだけですけど 後はワイルドカードでも使って何とかすれば くれぐれも言って置きますが動作検証はしていませんのであしからず |
3805 | バージョンアップ | o2ka | 6/2-01:29 |
記事番号3771へのコメント 「resume」の動作を勘違いしていました。 ↑RPGの"ITER"みたいな動きを期待していた ってわけで、実際にExcelを入れて動作を見て、以下のように修正しました。 Sub Test3() Dim shp As Object Dim s As String Dim i As Integer i = 0 On Error Resume Next s = InputBox("検索する文字列を入力して下さい") If s = "" Then Exit Sub For Each shp In ActiveSheet.DrawingObjects If InStr(1, shp.Text, s, 1) Then If Error <> "" Then On Error GoTo 0 Rem MsgBox "えら" On Error Resume Next GoTo RAST End If shp.Select MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub i = i + 1 End If RAST: Next shp If (i = 0) Then MsgBox "「" & s & "」は見つかりませんでした。" Else MsgBox i & "個の「" & s & "」が見つかりました。" End If End Sub いかがでしょうか? # ちなみに、「REM」の行は動作確認のために付けていた行。 # 「REM」を外すと線オブジェクトにぶつかったときに「えら」のメッセージが開く。 |
3807 | インデントが飛んじゃった | o2ka | 6/2-01:34 |
記事番号3805へのコメント 見にくいので、ソースを書き直し・・・ Sub Test3() Dim shp As Object Dim s As String Dim i As Integer i = 0 On Error Resume Next s = InputBox("検索する文字列を入力して下さい") If s = "" Then Exit Sub For Each shp In ActiveSheet.DrawingObjects If InStr(1, shp.Text, s, 1) Then If Error <> "" Then On Error GoTo 0 Rem MsgBox "えら" On Error Resume Next GoTo RAST End If shp.Select MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub i = i + 1 End If RAST: Next shp If (i = 0) Then MsgBox "「" & s & "」は見つかりませんでした。" Else MsgBox i & "個の「" & s & "」が見つかりました。" End If End Sub |
3918 | Re:インデントが飛んじゃった | がみかみ | 6/3-09:32 |
記事番号3807へのコメント o2kaさんは No.3807「インデントが飛んじゃった」で書きました。 >見にくいので、ソースを書き直し・・・ > >Sub Test3() > Dim shp As Object > Dim s As String > Dim i As Integer > > i = 0 > > On Error Resume Next > s = InputBox("検索する文字列を入力して下さい") > If s = "" Then Exit Sub > > For Each shp In ActiveSheet.DrawingObjects > > If InStr(1, shp.Text, s, 1) Then > If Error <> "" Then > On Error GoTo 0 >Rem MsgBox "えら" > On Error Resume Next > GoTo RAST > End If > shp.Select > MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" > If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub > i = i + 1 > End If > >RAST: > > Next shp > > If (i = 0) Then > MsgBox "「" & s & "」は見つかりませんでした。" > Else > MsgBox i & "個の「" & s & "」が見つかりました。" > End If >End Sub ありがとうございます。 完璧でした。 で少し欲張りなんですが、検索ヒット数が複数ある場合、ヒットするたびに そこのオブジェクトにカーソルがいくようにするにはどうしたらいいでしょうか。 |
3919 | 自分では | がみかみ | 6/3-09:36 |
記事番号3918へのコメント がみかみさんは No.3918「Re:インデントが飛んじゃった」で書きました。 >o2kaさんは No.3807「インデントが飛んじゃった」で書きました。 >>見にくいので、ソースを書き直し・・・ >> >>Sub Test3() >> Dim shp As Object >> Dim s As String >> Dim i As Integer >> >> i = 0 >> >> On Error Resume Next >> s = InputBox("検索する文字列を入力して下さい") >> If s = "" Then Exit Sub >> >> For Each shp In ActiveSheet.DrawingObjects >> >> If InStr(1, shp.Text, s, 1) Then >> If Error <> "" Then >> On Error GoTo 0 >>Rem MsgBox "えら" >> On Error Resume Next >> GoTo RAST >> End If >> shp.Select >> MsgBox "「" & s & "」は " & shp.Name & " の中に見つかりました。" >> If MsgBox("次を検索しますか?", vbYesNo) = vbNo Then Exit Sub >> i = i + 1 >> End If >> >>RAST: >> >> Next shp >> >> If (i = 0) Then >> MsgBox "「" & s & "」は見つかりませんでした。" >> Else >> MsgBox i & "個の「" & s & "」が見つかりました。" >> End If >>End Sub > >ありがとうございます。 >完璧でした。 >で少し欲張りなんですが、検索ヒット数が複数ある場合、ヒットするたびに >そこのオブジェクトにカーソルがいくようにするにはどうしたらいいでしょうか。 > > > Cells.FindNext(After:=ActiveCell).Activateとかを 記録したら出たので使うのかと思いました。 |