[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA実行後にシート内検索が出来なくなる』(おーじさん)
初めまして。
VBAについてお伺いしたいことがあり質問させていただきます。
※VBAは「汚いコードだけど動く」レベルの素人です。
−−−−−−−−−−−−−−−−−−−−−−−−−−
Sheet1のB列より該当の番号(1〜10000)を探し出し、
一致した番号の行をSheet2の8行目に挿入。
その後、Sheet1の元あった行を削除。
−−−−−−−−−−−−−−−−−−−−−−−−−−
上記処理は問題なく実行できるのですが、この処理を行うとその後シート内検索(Ctr+F)が正しく機能しない現象に陥ってしまっています。
(検索対象が見つかりません。「オプション」をクリックして〜)
※再度Excelを開き直すとこの減少は治ります。
VBAが影響しているのか、別の原因なのかもわからない状況なので、お教えいただけると恐縮です。
Sub test()
DimansAsString ans=InputBox("Sheet2へ移動する番号を入力してください")
IfStrPtr(ans)=0ThenExitSub Ifans<>""Then
Application.CutCopyMode=False Sheets("Sheet2").Rows(8).Insert
OnErrorGoToSkip r_num=Range(Cells(7,2),Cells(2000,2)).Find(What:=ans,LookAt:=xlWhole).Row Rows(r_num).CopySheets("Sheet2").Rows(8) Rows(r_num).Delete
EndIf EndIf ExitSub
Skip: Sheets("Sheet2").Rows(8).Delete MsgBox("該当の番号がありません")
EndSub
宜しくお願いいたします。
< 使用 Excel:Excel2013、使用 OS:Windows10 >
こんにちは ^^ FINDって新たに指定しなおさないと。前回指定した設定が そのままになっている。というお話を聞いた事が有ります。 検索すればどの値がそのまま残るとか。詳細に説明が有る サイトが有ったとおもいましたですよ。気が付いた点だけ ですみません。 違っていましたらお許しを。。。。でわ m(__)m
(隠居じーさん) 2019/02/25(月) 15:40
検索に失敗するとき(Findメソッドの引数省略時に起きる失敗) https://www.moug.net/tech/exvba/0150111.html
LookInで検索対象を指定すれば回避できるみたいなので
Sub test()
Dim ans As String, r_num As Long ans = InputBox("Sheet2へ移動する番号を入力してください")
If StrPtr(ans) = 0 Then Exit Sub If ans <> "" Then Application.CutCopyMode = False Sheets("Sheet2").Rows(8).Insert
On Error GoTo Skip r_num = Range(Cells(7, 2), Cells(2000, 2)).Find(What:=ans, LookIn:=xlValues, LookAt:=xlWhole).Row Rows(r_num).Copy Sheets("Sheet2").Rows(8) Rows(r_num).Delete End If
Exit Sub
Skip:
Sheets("Sheet2").Rows(8).Delete MsgBox ("該当の番号がありません")
End Sub (bi) 2019/02/25(月) 15:52
>>隠居じーさん さん
ありがとうございます。 言われてみればオプションは完全に盲点でした。 そして確かに完全一致のチェックが入ったままでした。
>>bi さん
私も同じサイトを見て試してみましたが、LookInを入れただけではダメでした。 LookAtの完全一致の設定がそのまま残っているのが原因のようなので、 もう少し探してオプションの設定ができるかどうか試してみます。 ありがとうございました。 (おーじさん) 2019/02/25(月) 20:03
…と書いていて、お困りの点は、マクロじゃなくて、手動で検索したときに、あるはずなのに見付からないということだったりします?
(もこな2) 2019/02/25(月) 20:33
>>もこな2 さん
inputboxには1〜10000の数字のみの場合と、 1〜10000の数字の後ろに半角ハイフンと半角英数(大文字)を組み合わせた2パターンとなります。 例) 1245 5607 1645-X 7752-UY
使用するコードは一報方向で、 Sheet1に設置されたボタンでSheet1からSheet2へ移動するのみなので、今のところ問題は出ておりません。 (コードにおかしな部分や改善点があれば別途ご教授いただけると助かります。。。)
>マクロじゃなくて、手動で検索したときに、あるはずなのに見付からないということだったりします? その通りです。 実行後の検索と置換のダイアログのオプションの ・セルの内容が完全に同一であるものを検索 ・半角と全角を区別する この2つにチェックが入ってしまい、部分一致が出来なくなってしまっていることに困っていました。
手動で外せば問題はないことが分かりましたが、一々外すのも面倒なので With Range("A1") .Select .Find What:="", LookIn:=xlValues, LookAt:=xlPart _ , SearchOrder:=xlColumns, MatchByte:=False End With こちらのコードを試してみて、問題があればまた質問させていただければと思っております。
(おーじさん) 2019/02/26(火) 13:38
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.