[[20130731035611]] 『セルではなく同じ文字へジャンプできませんか?』(おこじょ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルではなく同じ文字へジャンプできませんか?』(おこじょ)

はじめまして。
現在、上の質問のような機能ができないか?悩んでいます。

(質問内容)
 大量の顧客名の記載がある台帳があります。
表紙にその一覧があり、それを選択後同じ文字(顧客名)にジャンプしたい

(イメージ)
目次シート「株式会社 テスト」を選択
         ↓
      マクロを実行
         ↓
鮮魚系会社シート「株式会社 テスト」が選択

(現状)
 検索したところ似た質問に対し下記のようなロジックを記述された方がいます。

Sub FindY()
Dim WS As Worksheet
Dim SRCHED As Range
Dim What As Variant
SN = ActiveSheet.Name
RN = Selection.Row
CN = Selection.Column
IV = Selection.Value
What = IV
Cells(RN, CN) = ""
For Each WS In Worksheets
WS.Select
Set SRCHED = Cells.Find(What:=What, After:=ActiveCell, LookIn:=xlValues, _
LookAt:=xlPart)
If Not SRCHED Is Nothing Then Exit For
Next
If SRCHED Is Nothing Then MsgBox "N/A" Else WS.Select: SRCHED.Activate
Worksheets(SN).Cells(RN, CN) = IV
End Sub

これで全シートの検索が可能なのでしょうか?
まだほとんどマクロを触っていない者のため、かなり解読に難儀しています。
ちなみにこれを実行すると同一シートでは検索できたのですが、
複数シートではMsgbox「N/A」と表示されます。。

申し訳ないのですが、お分かりになる方でご教授お願いできませんでしょうか?

どうかよろしくお願いします。


 参考にされたのは下記ですか?
http://okwave.jp/qa/q7431140.html
 
>12行目の WS.Select は必要のないコードです。マクロの進行にしたがって、
>つぎつぎと選択シートを変えていくのが分かるようにして、マクロがちゃんと
>仕事をしていることを確認するために入れてあります。動くことが確認されたら削除してください。
 
とありますが、書いてある通りに消してしまうと
>Msgbox「N/A」と表示されます。。 
となります。
WSがアクティブにならない(アクティブシートが切り替わらない)ので
Cells.Findはマクロ実行時にアクティブなシートしか検索しません。
下記に差し替えてみてください。
 
 Option Explicit

 Sub FindY()
     Dim WS As Worksheet
     Dim SRCHED As Range
     Dim What As Variant
     Dim SN As String

     SN = ActiveSheet.Name
     What = ActiveCell.Value
     For Each WS In Worksheets
         If WS.Name <> SN Then
             Set SRCHED = WS.Cells.Find(What:=What, After:=WS.Cells(1, 1), LookIn:=xlValues, _
             LookAt:=xlPart)
             If Not SRCHED Is Nothing Then Exit For
         End If
     Next
     If SRCHED Is Nothing Then MsgBox "N/A" Else WS.Select: SRCHED.Activate
 End Sub
 
(みやほりん)

みやほりん様

 大変遅くなりましたが、思った動きになっています。
大変助かりました。ありがとうございます。

で、もう1点お願いがあるのですが。

セルへジャンプ後にセルの色を変えるにはどうすればいいのでしょうか?

理由としては
大量のデータがある中で、ジャンプ後探しにくい場合があるため。

ちなみに簡単ではありますが、
'選択行のセルの色を消す

     Rows(ActiveCell.Row).Interior.ColorIndex = xlNone
'色をつける
     Cells(ActiveCell.Row, ActiveCell.Column).Interior.ColorIndex = 37
こう記述し、if文の終わりに入れたのですがジャンプ前のシートの色は変わりますが
ジャンプ先は変わりません。

もしくは、ジャンプ後のセルを目立たせる何かありましたら合わせて教えてもらえます
でしょうか?

重ね重ね、お願いして申し訳ございません。

(おこじょ)


 End Sub
の前で
     Cells(ActiveCell.Row, ActiveCell.Column).Interior.ColorIndex = 37
としてください。
ただし、Cells(ActiveCell.Row, ActiveCell.Column)はすなわち、ActiveCellです。
で、この時点でのActiveCellはその直前にSRCHED.Activateとしていますから、
 
     Cells(ActiveCell.Row, ActiveCell.Column).Interior.ColorIndex = 37
を
  SRCHED.Interior.ColorIndex = 37
とすべきところでしょうか。
色を消す部分は私ならForループの前にもう一回ループで
     For Each WS In Worksheets                 'この三行を追加
         WS.Cells.Interior.ColorIndex = xlNone '  〃
     Next                   '  〃
     For Each WS In Worksheets
     :
     :
のようにするでしょうか。
 
ただ、次のような条件が成り立っていれば、です。
「色をつけるセルにもともと別の色が付いていない」
「次の検索のときに例外なく色を消してしまっても良い」
 
私ならオートフィルタを使ってその行だけ表示するほうをえらぶかな。
(みやほりん)

みやほりん様

アドバイス、ありがとうございます。
おかげさまで思う動きになっていると判断しています。

挙げていただいた条件も特に満たしていたので、良かったです。

ちなみに説明不足でありましたが、
ジャンプした先のシートは

シート名:鮮魚系会社シート
取引先
 セルA  セルB  セルC   セルD
株式会社 テスト  株式会社 テストA
株式会社 テストB  株式会社 テストC
株式会社 テストD  株式会社 テストE
株式会社 テストF
のように縦に1列で並んでいるものでないため、オートフィルタでは難しいと
判断していました。

ちなみにこの場合でもオートフィルタで上手に表示できるものなのでしょうか?

しかし、思うような動きになって助かりました。
表示の色を点滅で視覚的にすぐ分かるものができないか、別で調べたいと
思います。

いずれにせよ、色々丁寧に教えていただきありがとうございました。

(おこじょ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.