• ベストアンサー

エクセルマクロのVBAでINDEX関数を使う。

エクセルマクロのVBAでINDEX関数を使って値を取得しています。 値を取得したセル番地を取得したいと考えています。 ネットで調べましたが、なかなか思うような内容をヒットできません。 VBAに詳しいかた、ご教授お願い致します。

  • pao5
  • お礼率94% (49/52)

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

myIndexArea は Rangeオブジェクトを格納した変数ですか? その場合はIndex関数を使う必要はありません。 「Range オブジェクトの Item プロパティ」を使えば良いです。 myTemp = myIndexArea.Item(myRow, myColm).Value Item プロパティはセル範囲 (Range オブジェクト) を返しますから、 取得したい項目に合わせて、ValueプロパティやAddressプロパティを使います。 MsgBox myIndexArea.Item(myRow, myColm).Address 省略形で..myIndexArea(myRow, myColm).Address...とも書けます。

pao5
質問者

お礼

とても助かりました。 myIndexArea は、Rangeオブジェクトとして、定義していましたが、教えて頂いたようなやり方は、まったくしりませんでした。 本当にありがとうございました。

その他の回答 (1)

  • soixante
  • ベストアンサー率32% (401/1246)
回答No.1

もう少し具体的に書いたほうがよいのではないでしょうか。 値が取得できているのにセル番地が取得できないというところ。 そのセルを選択して Msgbox ActiveCell.Address でもいいんでしょうけど、やりたいことと合ってますか?

pao5
質問者

お礼

ご回答ありがとうございます。 質問内容が正確でなくて、申し訳ありません。 Index関数を使ったコーディングは以下の通りです。  myTemp = Application.Index(myIndexArea, myRow, myCol) 教えて頂いた Msgbox ActiveCell.Address でセル番地を確認しましたが、Index関数で検索しているセルとは別の場所でした。 Index関数の仕様としては、セルをアクティブにして値を参照しているわけではないようなのですが、できれば、何とかIndex関数で検索した値があるセル番地を取得したいと思っています。

関連するQ&A

  • VBA フォーム ボタンのマクロ登録

    VBAのフォームボタンのマクロ登録をしています。 ボタンが1000個有り、 1個1個登録すると数時間かかってしまいます。 ボタンがあるセル番地を取得できる関数を探しています。 ご存知の方がおられましたら教えてください。 よろしくお願い致します。

  • ExcelのVlookup関数で一致した文字のセルの番地を取得する方法

    ExcelのVlookup関数で一致した文字のセルの番地を取得する方法 プログラム(VBA)で、検索で使用する関数でVlookup関数というのがあるというのが最近知ったのですが、Vlookup関数は、検索するセルの範囲を指定して、検索対象の文字列が一致した場合、そのセルの内容(値)を返すという風に書いてあったのですが、値ではなく、そのセルの番地を取得する方法はあるのでしょうか? ありましたら、その方法を詳しく教えてください。Vlookup関数以外でも検索するコードがあるようですが、Vlookup関数に限った場合でよろしくお願いします。 回答よろしくお願いします。

  • エクセルVBAでワークシート関数のようにしたい

     例えば、セルA1に日付を入力して、セルB1に関数WEEKDAYが入力されていると、すぐセルA1の値を返してくれますが、これと同じことをVBAで再現したいのですが、可能でしょうか?  マクロやVBAでWEEKDAYを記述しても、「ツール」→「マクロ」→「マクロ」か「VBA」でやらないとA1の値をB1に返せないので、A1に日付を入力した瞬間、B1に値を返したいのですが、よろしくお願いします。

  • エクセルVBAの関数

    エクセルの関数について質問があります。Array関数とChoose関数です。ヘルプみても理解できません。 Array関数は私自身 Array("木村","中居","香取")は Range("セル番地").Value="木村" Range("セル番地").Value="中居" Range("セル番地").Value="香取" と同じように考えています。 Choose関数は Choose(arashi,"木村","中居","香取") arashiが指定したセルに対し木村か中居か香取があればarashiのセルに反映するというように考えています。 間違っていると思うのでどなたかご教授宜しくおねがいします。

  • VBAのプログラムとシートでの計算の速度

     現在、エクセルVBAでマクロを組んでいます。 マクロで算出した値を、セルを指定して、シートに代入しています。シートの代入する理由は、途中の計算結果の確認とエクセル関数を利用し、マクロの簡便化を図りたいためです。  代入した値を基にして、エクセル関数を使った結果の値を、他のセルに表示(代入)していますが、VBAで、その結果の値を、利用しています。  お聞きしたいのは、最初にシートに代入してから、エクセル関数の結果を得られる前に、VBAが、値を取得しないかどうか心配です。  素人考えでは、同じエクセル上で動作しているので、エクセル関数の計算終了後に、VBAが動くと思いますが。どうでしょうか?

  • EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。

    EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。 EXCELの検索機能において、通常は、オプションの「セル内容が完全に同一であるものを検索する」のチェックを外して使用しています。 あるマクロにおいて、Find関数のLookAtの値を「xlWhole」(完全一致)で使用しています。 この「LookAt」の値は、通常の手動での検索にも設定が引き継がれるため、このマクロの後に、検索機能を使用するとオプションの「セル内容が完全に同一であるものを検索する」はチェックされた状態になっています。 つまり、通常時はあいまい検索、マクロ時は完全一致検索を行いたいと思っており、マクロの最後で、あいまい検索に設定を変更しておきたいのですが、そういった指定は可能なのでしょうか。 ごり押しですが、最後に、あいまい検索で適当な検索を行っておくという事も考えましたが、もう少しスマートな方法があるのか、ご存知の方がいらっしゃればと思い質問させていただきました。 よろしくお願いします。

  • エクセル index関数で

    エクセルindex関数で疑問を持ったのですが a1:a4が 1,2,3,4の値が入っていたとき =index(a1:a4,3,1)とやるとa3の値3が入ります しかし =sum(a1:index(a1:a4,3,1))とやると =sum(a1:a3)と計算されますがなぜでしょうか? =sum(a1:3)となりエラーになるとおもいますが・・ なぜ下の場合だとセル番号が返されるのですか?

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

  • Excelの関数またはマクロを教えて下さい。

    Exsel2000の関数で、現在以下の関数まで出来たのですが、これを応用して検索値「A1」を2つのセル「A1&B1」にしたいのですが、どうすればよいのでしょうか?どなたか方法を教えて下さい。 =VLOOKUP(A1,Sheet1!$A$1:$E$2000,4) 上記の関数から判るように、これは 例えばSheet2のC1のセルにこの式を入れる場合、A1と同じ内容の値を、Sheet1のA列から検索して、そして同じ行のSheet1のD列の値をSheet2のC1のセルに返すという関数です。 これを応用して、「A1と同じ内容…のA1を、A1&B1の2つが一致するセルを検索して、同じ列のSheet1のD列の値をSheet2のC1のセルに返すという関数にしたいのです。 どなたかおわかりになる方がおりました宜しくお願いいたします。 また、マクロを使う方法でも良いのですが、当方マクロは詳しくないので出来るだけ判りやすくお願いいたします。

  • エクセルのマクロ、VBAって?

    お世話様です。 エクセルは関数(fx)で計算等は出来るのですが マクロ、VBAとなるとさっぱり判りません? マクロ、VBAとは何ですか? どのような時にマクロ、VBAを使用するのでしょうか? 参考URLがあれば教えてください。 以上、お願いします。

専門家に質問してみよう