Workbooks(filename).Sheets("歳出").Select
For gyo = 41 To 2 Step -1
If Workbooks(filename).Sheets("歳出").Range("C" & gyo).Value <> Workbooks("全部1つ.xls").Sheets("部署情報").Range("C" & busho).Value Then
Workbooks(filename).Sheets("歳出").Range("A" & gyo & ":F" & gyo).Select
Selection.Delete Shift:=xlUp
End If
Next
Sub range_select_sample_OK()
'以下はOK
Worksheets("Sheet2").Select
Range("A1").Select
End Sub
Sub range_select_sample_NG()
'以下はNG
Worksheets("Sheet1").Select
Worksheets("Sheet2").Range("A1").Select 'ここで怒られる。
End Sub
受講生さんの投稿
(投稿ID: 4975)
VBAについてはたいへん関心がありましたが、今までいくら学習しても自分でプログラムを作成するにはいたらず、むずかしいと諦めていました。
どこのホームページかわかりませんが、この講座を紹介しており受講してみたところ、先生の考え方やどこに注意するのかなどもわかり、動画から作成するまでの流れも理解でき、今では初級レベルの問題で時間はかかりますが、自分で考えて作成することができるようになりました。
この講座に出会えたことを感謝しています。
※一番うれしかったのはハナコのステップで、これまでプログラム作成にあたっては、初めから完成形を作ろうとしていたことに問題があったのだと気付くことができました。本当にありがとうございます。
今回の課題の中で一つ質問があります。
今回の課題の回答の中で下記のようなプログラムがあります。「Workbooks(filename).Sheets("歳入").Select」とはじめにシートを選択していますが、それ以降の構文で「Workbooks(filename).Sheets("歳入")」や「Workbooks("全部1つ.xls").Sheets("部署情報")」のようにセルを指定するにあたりシート名等をしっかり指定しているので、この構文はいらないのではないかと思い、「Workbooks(filename).Sheets("歳入").Select」をコメントにして実行してみたところ「実行時エラー1004 RangeクラスのSelectメソッドが失敗しました。」と表示されました。
その理由がわからないため、教えていただけますでしょうか。
記
小川 慶一さんのコメント
(コメントID: 7038)
おはようございます。
講座がお役に立てているようでしたら何よりです (^^*
ご質問の件、簡潔に述べると、以下のことが理由です。
・セルの .Select は、選択したいセルが含まれたシートが表示されていないとできない(エラーになる)
たとえば、あるエクセルファイル内に、2つのシート Sheet1, Sheet2があるとします。
その状態で、以下の2つのマクロを実行します。結果は、コメントに記載のとおりになります。
これは、選択したいセルが、表示されているファイルとは別のファイルにあるシート内にある場合でも同様です。
..という説明とサンプルコードで、いかがでしょうか。
受講生さんのコメント
(コメントID: 7043)
早急なご対応ありがとうございました。
たいへんわかりやすいサンプルを提示していただき、実際に実行してみたところ確かにおっしゃる通りの結果となりました。
削除するセル範囲を選択する際に、セル.selectが使われているため、その前にセル.selectのあるシートを選択する必要があったということなんですね。
>これは、選択したいセルが、表示されているファイルとは別のファイルにあるシート内にある場合でも同様です。
これについても確認してみましたが同様の結果となりました。
今後ともよろしくお願いいたします。
小川 慶一さんのコメント
(コメントID: 7045)
解決できたようで良かったです。
ひきつづき、学習お楽しみください☆