[[20171115220816]] 『別のシートからのVBA』(akio) ページの最後に飛ぶ

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

 

『別のシートからの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 >


>Sheets"並べる"に下記VBAを書いていますが、

シートモジュールでなく、標準モジュールで試してください。

(マナ) 2017/11/15(水) 22:42


マナさま
早速のお返事有難うございます。

>シートモジュールでなく、標準モジュールで試してください。

以前、そのように言われたのを思いまして、この質問の前に
開発をクリック、visual basicの標準モジュールで貼り付けをしました。 
他のデータを見た後で、標準モジュールに書かれたコードを
開こうとしても何も書かれていないのです。

マナ様から標準モジュールで試して下さいと言われた今も消えています。

標準モジュールの出し方は、開発をクリック後、visual basic マクロ マクロの記録
のところでvisual basic をクリック、挿入をクリックしたのです。

どこか違うところから探すのでしょか?

(akio) 2017/11/15(水) 23:18


↓の(5)でわかりますか
http://www.excel.studio-kazu.jp/lib/e4b/e4b.html

(マナ) 2017/11/15(水) 23:57


マナさま
調べて頂き有難うございます。

モジュールの見方は、わかったのですが、
私がモジュールに貼り付けたコードは見当たりませんでした。

モジュール1をクリックすると簡単なコードがありましたが、
次にモジュール1をクリックすると何も見えません。

明日、再度、モジュールに貼り付けて確認をします。

(akio) 2017/11/16(木) 00:19


Sheets"並べる"のところで標準モジュールにコードを書けば、
Sheets"並べる"のところからSheets"aa"に指定しているので"aa"に移るのですか?
それとも違うシートから標準モジュールを書いてもSheets"aa"に移るのですか?

明日で結構ですよ

(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


>選択するマクロにModule 1がありません。

同じ名前のマクロが、例えば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


>Sheets"並べる"のところからSheets"aa"に指定しているので"aa"に移るのですか?
>それとも違うシートから標準モジュールを書いてもSheets"aa"に移るのですか?

シート名をちゃんと指定すれば、指定したシートに
省略すれば、アクティブシートに

です。(標準モジュールの場合)
以前にも、同じことで躓きましたよね。

これも、繰り返しになりますが、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.