重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

昨日VBAの事で質問し回答を頂いたのですが追加で質問があります。ベストアンサーを選ぶと質問は締め切られる事を知らずにお礼をしたら終わってしまっていました。どなたか宜しくお願い致します。
最初の質問は
表を作りたいのですが、
顧客名のシートを100枚ほど作り、シート1(シート1は検索シートにしたいので顧客名は無)のA1にクライアント名を入力したら入力した顧客名シートが出てくる様にしたいです。
以上が最初の質問です。

以下の書式がベストアンサーに選らばせて頂いた方の回答です。
これで動くようになったのですが、

追加で

シートのC1に顧客のID数字が7ケタあるのですが、顧客名シート検索かID検索どちらかで一方入力した場合のコードとかは教えて頂いたコードに足せば可能ですか?
というのが質問です。
宜しくお願い致します。


Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long, str As String, myFlg As Boolean
str = Range("A1")
For k = 1 To Worksheets.Count
If Worksheets(k).Name = str Then
myFlg = True
Exit For
End If
Next k
If myFlg = True Then
Worksheets(str).Activate
Else
MsgBox "該当シートなし"
End If
End Sub

A 回答 (1件)

こんばんは!


前回回答した者です。

>シートのC1に顧客のID数字が7ケタあるのですが・・・
とありますが、各SheetともID番号がC1セルに入っている訳ですよね?

そして「検索用」SheetのA1セルに、Sheet名もしくはID番号を入力すると
そのSheetを選択したい!
という解釈での一例です。

ID番号の扱いが問題になりますが、「文字列」で7桁表示しているのではなく
各Sheetには「数値」でID番号が入っていて、表示形式で7桁表示にしている!
という前提です。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long, tmp, myFlg As Boolean
tmp = Range("A1")
If IsNumeric(tmp) Then
For k = 1 To Worksheets.Count
If Worksheets(k).Range("C1") = tmp Then
myFlg = True
Exit For
End If
Next k
Else
For k = 1 To Worksheets.Count
If Worksheets(k).Name = tmp Then
myFlg = True
Exit For
End If
Next k
End If
If myFlg = True Then
Worksheets(k).Activate
Else
MsgBox "該当シートなし"
End If
End Sub

こんなんではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

動きました!ありがとうございます。
昨日直ぐにベントアンサーに選ばせて頂いたら質問出来なくなってしまっていたので、練習用にデータをコピーしてやっていたのですがダメで途方に暮れていました。
質問見つけて下さいましてありがとうございます。本当に感謝の気持ちでいっぱいです。毎日試行錯誤してやって最初に質問したコードにたどり着いたのですが作動せず、ストレスで頭が狂いそうになりました。

本当にありがとうございます!!

他にも質問してあるのですが、そちらもお時間があれば見て頂きたいです。
宜しくお願い致します。

お礼日時:2013/05/19 22:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!