• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:違うシートで作成した表を読み込むマクロ)

違うシートで作成した表を読み込むマクロのエラー解決方法

このQ&Aのポイント
  • 掲示板に投稿せずに作ったマクロを実行する場合に、別のシートに配置した表を読み込む方法について教えてください。
  • 投稿せずに作成したマクロを実行する際、表が別のシートにある場合、エラーが発生する問題があります。どのように修正すれば、別のシートにある表を読み込むことができるでしょうか?
  • 掲示板で見つけたマクロを参考にして作成したマクロにおいて、表を別のシートに配置した場合にエラーが発生する問題が発生しました。エラーを解消する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.6

これでどうでしょう。 fs = (Left(fs, 5)) Set r = Sheets("値").Columns(1).Find(what:=fs, after:=Range("A22"), LookAt:=xlWhole) If r Is Nothing Then Exit Sub 'Sheets("値").Select '必要なし 'r.Offset(0, myDay).Select '必要なし Cells(10, 10) = r.Offset(0, myDay).Value Cells(10, 9) = r.Value

TW-1
質問者

お礼

回答のほどありがとうございました。 記載して頂いたマクロで別Sheetに表があっても稼働するようになりました。 今後、もっとマクロについて勉強したいと思います。 本当にありがとうございました。

その他の回答 (5)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.5

おっと間違い #4です 自分の環境でテストしたまま回答しちゃいました If r Is Nothing Then Exit Sub r = r.Address   '←この位置に、追加してください Sheets("値").Select に訂正です

TW-1
質問者

お礼

回答のほどありがとうございます。 どうやらこのマクロでは数値以外を’日’のところに入力できないみたいですので入力するデータを限定して対処したいとおもいます。

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.4

何をしたいのか、よく分かりませんが InputBoxで適切な値を入れて走るようにするには 次の一行を追加してください If r Is Nothing Then Exit Sub r = r.Address   '←この位置に、追加してください Sheets("Sheet2").Select 参考までに

  • lul
  • ベストアンサー率41% (10/24)
回答No.3

えっと、とりあえず質問です。 >上記表であれば、列1111111で行4であれば「k」を表示のようにです。 ソースを見る限りでは入力された文字列の頭5桁を検索に使用し、6桁目以降をオフセットに使用していますね、さらに検索する際には完全一致で検索をかけに行きますのでA列が5桁でないと正常な検索結果は取得出来ないかと思われます、"11111111"と言う値が入っているセルでは検索結果に引っかかってきません。 まずこの辺りの矛盾を回避出来るよう説明頂ければ回答できると思います。 因みに「実行時エラー'13'型が一致しません」は数値型の変数 "myDay"に対して数値以外のものが入力された事によって起こるエラーです。 以下の1文をmyDayに値を代入する前に入れてください If Not IsNumeric(Mid(fs, 6, Len(fs))) Then MsgBox "数値以外が入力されました": Exit Sub

TW-1
質問者

お礼

回答のほどありがとうございます。 御指摘の通りどうやらこのマクロですと数値以外は入力できないみたいでした。 頭5桁の件ですが、申し訳ありません。最初に作成したものが5桁のものでしたのでそれを質問に載せてしまいました。 最終的には7桁か8桁に伸ばそうと思っているのです。 入力する数値は数字以外入力しないようルールを考えたいと思います。 別シートに表がある場合の対処方法もお分かりになればご教授の程お願いいたします。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

myDayが正しく取得できていますか。 ほかにも Cells(10, 10) = r.Offset(0, myDay) Cells(10, 9) = r このあたりも変更していますか。 "型が一致しません" はfsがInteger型だからでは。 まず同一シートでソースの意味を理解して完璧に動作してから 徐々に改良していったほうがよいと思います。

TW-1
質問者

お礼

回答のほどありがとうございます。 同一シートでは数値でやった場合はきちんと動作はしたのですがもう少し検証してから改良していきたいと思います。 Cells(10, 10) = r.Offset(0, myDay) Cells(10, 9) = r については、参考にさせていただいた物にはなかったのですが自分で作成してみたのです。 そのあたりも関係してそうですのでもう少し検証してみたいと思います。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

どの質問を参考にどう変更したのか情報があると回答しやすいとおもうのですが。 fs = (Left(fs, 5)) Sheets("値").Select '←ここへ移動 Set r = Columns(1).Find(what:=fs, after:=Range("A22"), LookAt:=xlWhole) でどうでしょう。

TW-1
質問者

お礼

御回答ありがとうございます。 参考にしました質問番号等を記載したほうがよかったと反省しております。 参考にさせて頂いた質問は「No2164579」です。 回答いただきました場所に Sheets("値").Select を入力して試したところ、「実行時エラー'1004' RangeクラスのSelectメソッドに失敗しました」というエラーがでてしましました。 該当箇所は r.Offset(0, myDay).Select の様なのですが。。。。

TW-1
質問者

補足

補足としまして、実行したいことはA列に数字+アルファベットの7か8桁のコードが並んでおり、22行目にアルファベットか数字もしくは日本語で表代並んでる表があり、縦と横の指定した文字の交差したセルに記載されているデータを特定のセルに表示、ということをしたいのです。     1 2 3 4 s b f 白 黒 11111111 d k 1111112 l b 11111113 g x 上記表であれば、列1111111で行4であれば「k」を表示のようにです。 あと、これはもう一つ質問を立てた方がいいのかもしれないのですが上記表で行に記入されているデータが数字の場合はうまくマクロが起動するのですが、アルファベットや日本語の場合、「実行時エラー'13'型が一致しません」というエラーが出てしまします。 もし、マナー・規約違反ではなければ上記の回避方法もご教授していただければ幸いです。