[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『別のシートからのVBA』(akio)
いつもお世話になり有難うございます。
下記シートのVBA Sub test()でSheets("29年度").Cells.Copy Sheets("aa").Range("A1")以降は、シート"aa"のところでVBAを実行すれば
Sheets"29年度"(CSVのデータが並んでいます)の不要な余分を削除する
事が出来ます。
現在一つのファイルで3つのシートにVBAが書かれています。
各シートのVBAがうまく走りましたから 各シートごとにVBAを
走らすよりSheets"並べる"にまとめてVBAを書こうとしています。
Sheets"並べる"に下記VBAを書いていますが、コード、Sheets("29年度").Cells.Copy Sheets("aa").Range("A1")は、29年度のコピーが
aaに貼り付けされましたが、次の行でColumns("A:B").Selectに来れば
アプリケーション定義、オブジェクト定義エラーとなります。
どのようにすればいいのでしょうか?
教えて下さい。
Sub test()
Sheets("aa").Activate
Sheets("29年度").Cells.Copy Sheets("aa").Range("A1") Columns("A:B").Select Selection.Delete Shift:=xlToLeft Columns("B:T").Select Selection.Delete Shift:=xlToLeft Columns("C:C").Select Selection.Delete Shift:=xlToLeft Columns("D:E").Select Selection.Delete Shift:=xlToLeft Columns("E:G").Select Selection.Delete Shift:=xlToLeft Rows("1:8").Select Selection.Delete Shift:=xlUp Columns("A:D").Select Selection.AutoFilter ActiveSheet.Range("$A$1:$D$452").AutoFilter Field:=4, Criteria1:="=" Range("A11:D446").Select Selection.EntireRow.Delete Range("D391").Select ActiveSheet.Range("$A$1:$D$392").AutoFilter Field:=4 Selection.AutoFilter
< 使用 Excel:Excel2016、使用 OS:Windows10 >
シートモジュールでなく、標準モジュールで試してください。
(マナ) 2017/11/15(水) 22:42
>シートモジュールでなく、標準モジュールで試してください。
以前、そのように言われたのを思いまして、この質問の前に
開発をクリック、visual basicの標準モジュールで貼り付けをしました。
他のデータを見た後で、標準モジュールに書かれたコードを
開こうとしても何も書かれていないのです。
マナ様から標準モジュールで試して下さいと言われた今も消えています。
標準モジュールの出し方は、開発をクリック後、visual basic マクロ マクロの記録
のところでvisual basic をクリック、挿入をクリックしたのです。
どこか違うところから探すのでしょか?
(akio) 2017/11/15(水) 23:18
(マナ) 2017/11/15(水) 23:57
モジュールの見方は、わかったのですが、
私がモジュールに貼り付けたコードは見当たりませんでした。
モジュール1をクリックすると簡単なコードがありましたが、
次にモジュール1をクリックすると何も見えません。
明日、再度、モジュールに貼り付けて確認をします。
(akio) 2017/11/16(木) 00:19
明日で結構ですよ
(akio) 2017/11/16(木) 00:31
連絡無いので悩んでいるのかと、
色々調べられては、申し訳なく
思いましたので、一報いれました。
(akio) 2017/11/16(木) 10:17
先程、各シートのVBAを一つのシートにまとめ標準モジュールに貼り付けました。
色々試しながら今度は、うまく行きました。
有難うございます。これで仕事がやりやすくなります。
ただ、VBAのコードを表し実行するのは、開発→visual basic をクリック→表示→プロジェクトエクスプ
ローラをクリックしてModule 1をクリックしなければ実行出来ないのでしょうか?
マクロボタンのようにシート上でボタンを押せばVBAが実行できる方法は、ないものでしょうか?
(もちろん挿入でボタンを出したのですが、選択するマクロにModule 1がありません。)
よろしくお願いいたします。
(akio) 2017/11/16(木) 22:49
同じ名前のマクロが、例えばModule2にもあれば、
Module1.test
Module2.test
のような感じで表示されますが、
そうでなければ、単に
test
と表示されているはずです。
(マナ) 2017/11/17(金) 18:57
>testと表示されているはずです。
ありました。
そしてボタンをつけることが出来ました。
>Sheets"並べる"のところで標準モジュールにコードを書けば、
>Sheets"並べる"のところからSheets"aa"に指定しているので"aa"に移るのですか?
>それとも違うシートから標準モジュールを書いてもSheets"aa"に移るのですか?
>(akio) 2017/11/16(木) 00:31
上記のことも理解できました。
色々有難うございました。
(akio) 2017/11/17(金) 22:34
シート名をちゃんと指定すれば、指定したシートに
省略すれば、アクティブシートに
です。(標準モジュールの場合)
以前にも、同じことで躓きましたよね。
これも、繰り返しになりますが、selectしないコードにしたほうがよいです。
アクティブシートがマクロの途中でかわってしまうことがあります。
期待通りの結果にならないかもしれません。
(マナ) 2017/11/17(金) 23:05
(akio) 2017/11/18(土) 01:01
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.