[[20210112153130]] 『VBAのworksheetfunctionのブック指定』(メイ君) ページの最後に飛ぶ

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

 

『VBAのworksheetfunctionのブック指定』(メイ君)

こんにちは
まず外国人なので日本語力が上手くないため、説明が理解しづらいかもしれませんがくれぐれもご了承ください。

概要とするとマクロを起動して他のブックを開いてそこにある資料を持ってきたいです。
その時他のブックの資料にフィルターをかけ、引っかかった資料だけ持ってくるためにworksheetfunction.subtotal関数を使いたいですが
selectで他のブックを指定してもマクロを起動するブックのシートが指定されてしまい、他のブックにworksheetfunction機能を指定する方法はないか苦労してますT.T

もしご存知の方いらっしゃいますとかわいそうな外国人を助けてもらえませんか。 お願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 何がしたいのか、よくわかりませんが、
 今作っているマクロのコードを書き込んでください。
 そして、何がうまく行かないのかを書いてください。
 そしたら、誰かが回答しくれるかもしれません
(´・ω・`) 2021/01/12(火) 16:10

 >selectで他のブックを指定しても

 目的のブックの目的のシートがSelectされた状態なら

       これでいいでしょう。
         ↓
  Debug.Print WorksheetFunction.Subtotal(9, ActiveSheet.Range("E2:E100"))

 ※上の例は、そのシートのE2:E100に表示された値の合計を求める場合

(半平太) 2021/01/12(火) 16:27


 あれー? 普通にこれで良くないですか?

 Debug.Print WorksheetFunction.Subtotal(9, Range("E2:E100"))

(半平太) 2021/01/12(火) 16:36


 コードを何処に書いているのかが、問題になるのかも知れない。

 標準モジュールなら、
   Debug.Print WorksheetFunction.Subtotal(9, Range("E2:E100"))

 シートモジュールなら
   Debug.Print WorksheetFunction.Subtotal(9, ActiveSheet.Range("E2:E100"))

(半平太) 2021/01/12(火) 16:42


持ってくる資料があるシートでは普通に下記のように

Dim count As Long
count = WorksheetFunction.Subtotal(3, Range("b5").CurrentRegion.Columns(1))
Debug.Print count

このコマンドを打つと問題なく持ってこれました。
問題はこのシートがActiveシートではない場合、どうすればよいでしょうか。T.T

例えば MACRO.xtmlのブックのシートからプログラミングをして
持ってきたい資料があるシートは「資料.xlsx」ブックの「test」シートにあります。

この場合、可能であれば
count = WorksheetFunction.Subtotal(3,worksheets("test").Range("b5").CurrentRegion.Columns(1))
このように指定してもって期待ですが絶対ダメですのでどうすればいいか気になりました。

(メイ君) 2021/01/13(水) 14:05


下記で可能だと思います。

 count = WorksheetFunction.Subtotal(3,Workbooks("資料.xlsx").Worksheets("test").Range("b5").CurrentRegion.Columns(1))
(hatena) 2021/01/13(水) 14:24

もともとその指定できますたっけ。。
試してみたところ

vba 実行時エラー 1004 :アプリケーション定義またはオブジェクト定義のエラーです。

このエラーが出てしまいましたT.T
(メイ君) 2021/01/13(水) 15:20


 こちらの環境 EXCEL 2016 では、資料.xlsx ファイルが開いていて test シートがあれば、動作しました。
 ただ、ファイル名やシートが異なっている場合はエラーメッセージが異なりますね。

 コードは、hatena さんのものをコピーして実行したでしょうか。
 手で打ち直した場合は、タイプミスはないですか?

(QS) 2021/01/13(水) 15:35


こちら(office365)でも↓を試してみましたが、ちゃんと結果が表示されましたよ。
    Sub test01()
        MsgBox WorksheetFunction.Subtotal(3, Workbooks("資料.xlsx").Worksheets("test").Range("b5").CurrentRegion.Columns(1))
    End Sub

マクロを実行したときにブックは開いてますよね?

(もこな2) 2021/01/13(水) 15:48


え。。!できました できました!
すみません タイプミスだったみたいです。

これのせいで何日悩みましたがとても嬉しいです。 本当にありがとうございます。( ´∀` )
(メイ君) 2021/01/13(水) 16:05


コメント返信:

[ 一覧(最新更新順) ]


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