Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6166 / 13644 ツリー ←次へ | 前へ→

【46598】シート全体の選択でエラーとなる susan 07/2/7(水) 19:00 質問[未読]
【46599】Re:シート全体の選択でエラーとなる ToShi 07/2/7(水) 19:25 発言[未読]
【46616】Re:シート全体の選択でエラーとなる susan 07/2/8(木) 9:15 質問[未読]
【46617】Re:シート全体の選択でエラーとなる Blue 07/2/8(木) 9:27 発言[未読]
【46645】Re:シート全体の選択でエラーとなる ichinose 07/2/8(木) 22:35 発言[未読]
【46640】Re:シート全体の選択でエラーとなる Toshi 07/2/8(木) 20:16 発言[未読]
【46644】Re:シート全体の選択でエラーとなる ichinose 07/2/8(木) 21:43 発言[未読]
【46647】Re:シート全体の選択でエラーとなる りん 07/2/9(金) 8:28 発言[未読]
【46749】Re:シート全体の選択でエラーとなる susan 07/2/13(火) 22:57 質問[未読]
【46750】Re:シート全体の選択でエラーとなる Kein 07/2/13(火) 23:28 回答[未読]
【46809】Re:シート全体の選択でエラーとなる susan 07/2/15(木) 23:12 お礼[未読]
【46821】Re:シート全体の選択でエラーとなる [名前なし] 07/2/16(金) 12:26 回答[未読]
【46824】Re:シート全体の選択でエラーとなる Blue 07/2/16(金) 14:42 発言[未読]

【46598】シート全体の選択でエラーとなる
質問  susan  - 07/2/7(水) 19:00 -

引用なし
パスワード
   シート全体を選択するために次のようにしたのですが
Cells.Selectでエラーになってしまいます。

Worksheets("MySheet").Select
Cells.Select

エラーメッセージは
「Range クラスの Select メソッドが失敗しました。」

どうしてでしょうか?

【46599】Re:シート全体の選択でエラーとなる
発言  ToShi  - 07/2/7(水) 19:25 -

引用なし
パスワード
   ▼susan さん:
今晩は
>シート全体を選択するために次のようにしたのですが
>Cells.Selectでエラーになってしまいます。
>
>Worksheets("MySheet").Select
>Cells.Select

Worksheets("MySheet").Cells.Select
これじゃなかったカナ?
試してください。

【46616】Re:シート全体の選択でエラーとなる
質問  susan  - 07/2/8(木) 9:15 -

引用なし
パスワード
   ▼ToShi さん:
>▼susan さん:
>今晩は
>>シート全体を選択するために次のようにしたのですが
>>Cells.Selectでエラーになってしまいます。
>>
>>Worksheets("MySheet").Select
>>Cells.Select
>
>Worksheets("MySheet").Cells.Select
>これじゃなかったカナ?
>試してください。

susanです。

原因は分かったのですが、なぜダメなのか理由が分かりません。

状況を詳しく説明すると、Sheet1にコマンドボタンを貼り付けて
このクリックイベントの処理の中で、上記のシート全体の選択を
行っていました。
シート全体の選択処理を標準モジュールに移すと正常に動作します。

なぜシートモジュールの中で他のシート全体の選択をすると
エラーになるのでしょうか。
他のシートのセルに値を設定するなどの処理はエラーになりません。

Toshiさん、回答ありがとうございます。
Worksheets("MySheet").Cells.Select
は標準モジュールの中でもエラーになりました。

【46617】Re:シート全体の選択でエラーとなる
発言  Blue  - 07/2/8(木) 9:27 -

引用なし
パスワード
   >状況を詳しく説明すると、Sheet1にコマンドボタンを貼り付けて
>このクリックイベントの処理の中で、上記のシート全体の選択を
>行っていました。
おそらく、そのシートモジュール内で単に

Cells

とかくと、そのシートのCellsと指定したことになるのでしょう。
(つまりMe.Cells)

ちゃんと、「どのシート」と指定を入れてみてはどうでしょうか?

Worksheets("MySheet").Select
Worksheets("MySheet").Cells.Select ' ActiveSheet.Cells.SelectでもOKそう

もしくは、Application.Gotoをつかうとか。

Application.Goto Worksheets("MySheet").Cells

【46640】Re:シート全体の選択でエラーとなる
発言  Toshi  - 07/2/8(木) 20:16 -

引用なし
パスワード
   今晩は。

>Toshiさん、回答ありがとうございます。
>Worksheets("MySheet").Cells.Select
>は標準モジュールの中でもエラーになりました。

実際に標準モジュールで動かしましたが、問題は無いですが・・・
何故でしょう。
もう一度ためしてください。
シートにプロテクトがかかっているとか無いでしょうか?

【46644】Re:シート全体の選択でエラーとなる
発言  ichinose  - 07/2/8(木) 21:43 -

引用なし
パスワード
   ▼Toshi さん:

こんばんは。
>
>>Toshiさん、回答ありがとうございます。
>>Worksheets("MySheet").Cells.Select
>>は標準モジュールの中でもエラーになりました。
>
>実際に標準モジュールで動かしましたが、問題は無いですが・・・
>何故でしょう。
>もう一度ためしてください。

>>Worksheets("MySheet").Cells.Select

いいえ。これはエラーになります。
例えば、

新規ブック(Sheet1、Sheet2が存在するブック)の標準モジュールに

'==================================================
Sub test()
  Worksheets("sheet1").Select
  Worksheets("sheet2").Cells.Select
End Sub

これを実行してください

Worksheets("sheet2").Cells.Select



「クラスの Select メソッドが失敗しました。」

というエラーが発生しますよね?


これは親オブジェクトから順にSelectしていかないと
エラーになりますよ!!

【46645】Re:シート全体の選択でエラーとなる
発言  ichinose  - 07/2/8(木) 22:35 -

引用なし
パスワード
   こんばんは。

>おそらく、そのシートモジュール内で単に
>
>Cells
>
>とかくと、そのシートのCellsと指定したことになるのでしょう。

Private Sub CommandButton1_Click()
  Worksheets("MySheet").Select
  MsgBox Cells.Parent.Name
   
End Sub

これを確認されるとBlueさんの仰っている事が
分かると思いますよ!!

【46647】Re:シート全体の選択でエラーとなる
発言  りん E-MAIL  - 07/2/9(金) 8:28 -

引用なし
パスワード
   susan さん、おはようございます。

>>>Cells.Selectでエラーになってしまいます。
>>>Worksheets("MySheet").Select
>>>Cells.Select

Blueさんのおっしゃるとおり、こうですね。
Private Sub CommandButton1_Click()
  Worksheets("MySheet").Select
  Application.ActiveSheet.Cells.Select
   '↑ここをきっちり書く(ActiveSheet.Cells.Selectだけでも動きますが念のため)
End Sub

理由もBlueさんのとおりで、省略時の親がCommandButtonのあるシートとなっていて、ActiveSheetではないからのようです。
なので、切り替えた後、非アクティブになっている状態でCells.Selectを実行していることになるのでエラーになります。

ただ、Select(セルの選択)は図形の挿入などの特別な時以外にはほとんどいらないと思っているので、なぜセル全体を選択する理由があるのか気になります。

【46749】Re:シート全体の選択でエラーとなる
質問  susan  - 07/2/13(火) 22:57 -

引用なし
パスワード
   susanです

ちょっと留守をしていたので、返事が遅れてすみません。

blueさん、ichinoseさんの説明で理解できました。
ありがとうございます。

▼りん さんへ
>ただ、Select(セルの選択)は図形の挿入などの特別な時以外にはほとんどいらないと思っているので、なぜセル全体を選択する理由があるのか気になります。

指定されたシート名のシートにデータを書き出していくのですが、
すでに存在していたら前回データをすべて消去してから書き出すようにしています。
前回データの行数/列数が可変なので、シート全体を消去するようにしています。
シートを削除してから同じ名前で再作成する方法もありますが、シートの順序の
制御が面倒なのであまりやりたくはないのです。
もしかしたら、シート内で使用されているセルの最大行番号/列番号が簡単に
取得する方法があるのでしょうか。

【46750】Re:シート全体の選択でエラーとなる
回答  Kein  - 07/2/13(火) 23:28 -

引用なし
パスワード
   りんさんも指摘してますが、殆どの処理に Select や Activate は必要ありません。
だから単に

Worksheets("MySheet").Cells.ClearContents

とするぐらいで目的とすることは出来るのですが、あえて
>シート内で使用されているセル
に拘るなら

Worksheets("MySheet").UsedRange.ClearContents

などとすれば良いでしょう。それで解決するはずですが、いちおう
>最大行番号/列番号
の取得には

With Worksheets("MySheet").Cells.SpecialCells(11)
  LstR = .Row
  LstC = .Column
End With
(引数の 11 は xlCellTypeLastCell と等価)

などが使えます。

【46809】Re:シート全体の選択でエラーとなる
お礼  susan  - 07/2/15(木) 23:12 -

引用なし
パスワード
   susanです

▼Kein さん:
スマートなやり方を教えてくれてありがとうございます。
私はあまりマクロに詳しくないので、手作業でやることを
マクロで記録して、それを参考にマクロを作成しています。
今回のシート全体の削除も手作業をマクロで記録すると
次のようになります。
 Sub Macro1()
  Cells.Select
  Selection.ClearContents
 End Sub

これをもとにいろいろ工夫をしてみたのです。
CellsとClearContentsがまとめてできるとは思いも
しませんでした。
またSpecialCellsのような便利なものがあるのも
知りませんでした。

このようにまったく不勉強な私にいろいろ教えて
いただいた皆様に感謝します。
これからはもう少し勉強しようと思います。

【46821】Re:シート全体の選択でエラーとなる
回答  [名前なし]  - 07/2/16(金) 12:26 -

引用なし
パスワード
   ▼ToShi さん:
>▼susan さん:
>今晩は
>>シート全体を選択するために次のようにしたのですが
>>Cells.Selectでエラーになってしまいます。
>>
>>Worksheets("MySheet").Select
>>Cells.Select
>
>Worksheets("MySheet").Cells.Select
>これじゃなかったカナ?
>試してください。

worksheets("MySheet").Activate
Cells.Select

【46824】Re:シート全体の選択でエラーとなる
発言  Blue  - 07/2/16(金) 14:42 -

引用なし
パスワード
   ▼[名前なし] さん:
>worksheets("MySheet").Activate
>Cells.Select
レスをよんでもらえていないのでしょうか?
これでは同じくエラーですよ?
(標準モジュールではなく MySheetモジュール以外のシートモジュールに
記述したときエラーになるということが問題になっているわけで)


worksheets("MySheet").Activate → MySheetをActivateにする
Cells.Select → 自分自身の Cells を選択する つまり Me.Cells.Select
        → 当然自分自身のシートを洗濯していないのでエラー

6166 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free