- ベストアンサー
はじめまして。
はじめまして。 最近EXCELのマクロを使ってみたいと思っています、超初心者です。 早速ですが質問です。 例えばシート毎にメーカー別で部品の型番が並んでいるとします。 シート名がAAA社のA2セルに12345という部品の型番 シート名がBBB社のA2セルにabcdeという部品の型番 そこで検索用のシートに型番を入力するとその型番のセルに移動する というマクロを作成したいと思っております。 大変恐縮ですがなにぶん初心者ですのでコードの意味等も説明していただけると 助かります。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
サンプル: 検索シートは1枚目(一番左のシート)にある 検索シートのA1セルに型番を入力することにした。 2枚目からのシートを1枚ずつめくって, もしも,A列に目的の型番を探して見つかったら, そのセルに移動して終わり。 見つからなかったら,次のシートに移って最後まで繰り返す sub macro1() dim i as long dim x as variant x = worksheets(1).range("A1").value for i = 2 to worksheets.count if application.countif(worksheets(i).range("A:A"), x) > 0 then worksheets(i).select application.goto cells(application.match(x, worksheets(i).range("A:A"), 0), "A"), true exit sub end if next end sub #解説 いろんな方法が思いつきます。勿論やり方は一つ切りなんて事は絶対ありません。 しばしば皆さん間違った質問をしますが,こういったご質問で重要なのは「コードの意味」じゃなく,「そのコードで何をしようとしているのか」です。 マクロ以前に,あなたご本人は,いったい「どうやって」エクセルを操るとそういった事が出来ると思いますか? それとも全く何一つやり方を思いつけませんか? その場合は,やっぱりマクロ以前にエクセルそのものの使い方について,まだちょっと勉強が足りていないのかも知れません。 あなた自身がマクロになったつもりで,あなたの手と目とアタマを使ってエクセルをこんな手順で動かせばできるかな?と,思いついたアイデアのその通りをマクロに翻訳すると,出来るようになります。 それこそ例えば, 1.シート2をめくる 2.A1から順にセルを1個ずつ,目的の値と等しいか比較する 3.見つけたら終わり。 見つからなかったら次のシートをめくって,また繰り返す とかだって出来ます。
その他の回答 (1)
- ka_na_de
- ベストアンサー率56% (162/286)
いろいろな方法のうちの一つです。 あえて説明しませんので、興味があれば調べてみてください。 Sub test() Dim mySt As Worksheet Dim myKey As Variant Dim c As Range Dim myMainStName As String myMainStName = "検索用シート" myKey = Worksheets(myMainStName).Range("A1").Value For Each mySt In ThisWorkbook.Worksheets If mySt.Name <> myMainStName Then Set c = mySt.UsedRange.Find(What:=myKey, LookIn:=xlValues, lookat:=xlPart, _ SearchOrder:=xlByColumns, MatchByte:=False) If Not c Is Nothing Then mySt.Activate Application.Goto c Exit Sub End If End If Next mySt End Sub