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

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

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

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

1204閲覧

「同ブック内の別シートの検索値が一致するとき、〇で返す」という処理が途中で止まる

san.chan

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/07/05 05:28

同ブック内の別シートの検索値が一致するとき、〇で返す

VBA初心者です
処理が途中で止まっているようです。

エラーメッセージも出ないので何がいけないのかよくわかりません。

VBA

1Sub 検索1() 2 Range("$Q19:$U20").Copy 3 Sheets("A").Select 4 Range("$C$569").Select 5 Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 6 :=False, Transpose:=False 7 ActiveSheet.Range("$B$1:$CL$570").AutoFilter Field:=3, Criteria1:=Range("$C$569") 8 ActiveSheet.Range("$C$569").Clear 9 10 Dim rng As Range 11 Set rng = cells 12 ActiveSheet.Range("$AN$4:$BC$500").SpecialCells(xlCellTypeVisible).Select 13 14 cells.Find(What:="玉掛", After:=activecell, LookIn:=xlValues, LookAt:= _ 15 xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ 16 , MatchByte:=False, SearchFormat:=False).Activate 17 18 If Not rng Is Nothing Then 19 Else 20 foundcell = "玉掛" 21 Sheets("B").Select 22 Range("$AV17:$AV20").Select 23 activecell.FormulaR1C1 = "〇" 24 Sheets("A").Select 25 Selection.AutoFilter 26 Sheets("B").Select 27 End If 28End Sub 29

発生している問題・エラーメッセージ

多分7行目の Activesheet .range.clear で止まっているように見えます

どこがいけないのでしょうか?
ふわっとした質問で大変申し訳ないのですが、お分かりの方いらっしゃいましたら教えてください。

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

stdio

2019/07/05 05:45

msgboxを使用し、どの行付近で調査しましょう。メッセージが表示されたら、そこの上の行に書かれているプログラムは正常に動いています。表示されなかったら、その付近が怪しいです。 その上で分からなければ質問して下さい。
san.chan

2019/07/05 05:50

わかりました。やってみます。
ttyp03

2019/07/05 05:59

MsgBoxよりはDebug.Printではないでしょうか?まあどっちでもいいですが。。。
stdio

2019/07/05 06:24

基本的に、そんなデバック用のプログラムなんてソースに残しませんからね...
guest

回答1

0

ベストアンサー

具体的に何をしたいプログラムなのかよくわかりませんでしたので、どこをどうするという回答には至りませんが、少なくとも言えることは、このプログラムにエラーはありませんし、途中で止まることなく正常終了します。
(玉掛という文字がなかった場合には、エラーが出て止まります)

If Not rng Is Nothing Then
の行にブレークポイントを置いて動作を確かめてはいかがでしょうか?

ちなみにですが、
Set rng = Cells
の後に、rngをNothingにするコードがどこにもありませんので、終盤のIFの結果は常にTrueとなって、Else以降は実行されないと思います。

もしかしたらですが、Findメソッドの結果が、rngに影響するつもりのコードでしょうか?
だとすると、Findで取った結果をrngに代入しなければなりません。

VBA

1Dim rng As Range 2Set rng = Range("AN4:BC500").Find(What:="玉掛") 3 4If rng Is Nothing Then 5 MsgBox ("玉掛はない") '本当はMsgBoxではなく、玉掛がなかった場合にやりたい処理を書く。 6Else 7 MsgBox ("玉掛はある") '本当はMsgBoxではなく、玉掛があった場合にやりたい処理を書く。 8End If

質問の意図とは違いますが、今回の質問者さんのやりたいことを実現するには、VBAよりもワークシート関数のほうが良いように思います。

あと、Excel関係で質問されるときには、Excelのバージョンも記載されるほうが良いです。
バージョンによって使えない関数や機能もあります。

投稿2019/07/06 08:16

Secret

総合スコア220

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

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

san.chan

2019/07/10 01:18

解決方法と質問の仕方を教えてくださり、ありがとうございます。 最終的にVBAではうまくいかなかったのでexcel関数で解決しました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問