Excel VBA質問箱 IV

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

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


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

【62749】AutoFitを使うには にしもり 09/8/27(木) 13:43 質問[未読]
【62750】Re:AutoFitを使うには つん 09/8/27(木) 14:42 発言[未読]
【62752】Re:AutoFitを使うには にしもり 09/8/27(木) 15:14 質問[未読]
【62753】Re:AutoFitを使うには つん 09/8/27(木) 15:31 回答[未読]
【62754】Re:AutoFitを使うには にしもり 09/8/27(木) 15:56 質問[未読]
【62755】Re:AutoFitを使うには つん 09/8/27(木) 16:05 発言[未読]
【62756】Re:AutoFitを使うには にしもり 09/8/27(木) 16:25 お礼[未読]

【62749】AutoFitを使うには
質問  にしもり  - 09/8/27(木) 13:43 -

引用なし
パスワード
   こんにちは。
 
AutoFitをつかおうとしています。
ですが、行数を捕捉できません。
ドットの前のオブジェクトが指定されてないからだとは思うのですが、
"A:A"をselectしたのでは認識されないのですか。
どこをなおせばよろしいでしょうか。
すみません解っていません。

Dim r As Long
  
Range("A:A").Select
r = .Rows.Count
’↑ここでエラーになる
Rows("3:" & r).EntireRow.AutoFit

【62750】Re:AutoFitを使うには
発言  つん  - 09/8/27(木) 14:42 -

引用なし
パスワード
   ▼にしもり さん
こんにちは^^

>AutoFitをつかおうとしています。
>ですが、行数を捕捉できません。
>ドットの前のオブジェクトが指定されてないからだとは思うのですが、
>"A:A"をselectしたのでは認識されないのですか。
>どこをなおせばよろしいでしょうか。
>すみません解っていません。
>
>Dim r As Long
>  
>Range("A:A").Select
>r = .Rows.Count
>’↑ここでエラーになる
>Rows("3:" & r).EntireRow.AutoFit

なんかイマイチ何をされたいのかわからないのですが・・

r = .Rows.Count

こういう書き方をしたいなら、Withステートメント使わないと。
直前で、セレクトしても意味ないです。

With Range("A:A")
  r = Selection.Rows.Count
End With


で、ここをパスできたとして、
「r」に入ってるのは、A列全部指定されてるので、
Excel2007以前なら、「65536」になりますよね?
で、

Rows("3:" & r).EntireRow.AutoFit
これは
Rows("3:65536").EntireRow.AutoFit
と、同じ意味になって、でも、「EntireRow」だから、
3行目の行幅をAutoFitすることになって・・・・
いまいち、「r」の意味がわかりませんorz

【62752】Re:AutoFitを使うには
質問  にしもり  - 09/8/27(木) 15:14 -

引用なし
パスワード
   ▼つん さん:
すみません、レコードは6万5千個あるわけではありません。
(1、2行はTitleなので)、たとえば3行〜20行です。
この場合、やりたいことは3行から下にむかって行を数え
rで最下端の20行目を捕捉したら
3行〜20行をAutoFitしたい(行の高さを適切にしたい)のです。

With Range("A:A")
  r = Selection.Rows.Count
End With

とのことですが、rにレコードがある最下端の行が入るためにはどう書けばよろしいでしょうか。

【62753】Re:AutoFitを使うには
回答  つん  - 09/8/27(木) 15:31 -

引用なし
パスワード
   ▼にしもり さん
どもども^^

>この場合、やりたいことは3行から下にむかって行を数え
>rで最下端の20行目を捕捉したら
>3行〜20行をAutoFitしたい(行の高さを適切にしたい)のです。

データの入ってる最終行を取得するのは、

r =Worksheets("Sheet1").Cells(Application.Rows.Count, 1).End(xlUp).Row

とかが一般的かなあ。

ヘルプで「End プロパティ」を読んでもらえばいいと思います。

【62754】Re:AutoFitを使うには
質問  にしもり  - 09/8/27(木) 15:56 -

引用なし
パスワード
   ▼つん さん:
すみません、型が一致しないとでるのですが、どこか悪いでしょうか。 

Dim r As Long  
  
With Range("A:A")
  r = Worksheets(ActiveSheet).Cells(Application.Rows.Count, 1).End(xlUp).Row
   '↑ここででる
  Rows("3:" & r).EntireRow.AutoFit
End With

どうかご教示ください。


みるべきはCount プロパティでなくEnd プロパティですか。
すみませんまた混乱しています。

【62755】Re:AutoFitを使うには
発言  つん  - 09/8/27(木) 16:05 -

引用なし
パスワード
   >Dim r As Long  

この場合、Withステートメントは意味ないように思います。
「Withステートメント」もヘルプ読んでください。
  
>  r = Worksheets(ActiveSheet).Cells(Application.Rows.Count, 1).End>   '↑ここででる

この場合、みるべきはCount プロパティでなくEnd プロパティでもなくて、
「Worksheets プロパティ」です。
Worksheets(ActiveSheet)←この書き方はあり得ません。

Worksheets("Sheet1") とか
ActiveSheet使うなら、そのままActiveSheet.Cells(1,1)・・・とかですよね。

でも、その二つのヘルプも読んでね。

>  Rows("3:" & r).EntireRow.AutoFit

それから、これも「EntireRow」は必要ないです。
これも、ヘルプ読まれたらいいかと思います。

【62756】Re:AutoFitを使うには
お礼  にしもり  - 09/8/27(木) 16:25 -

引用なし
パスワード
   ▼つん さん:
ありがとうございます。
できました。

Dim r As Long

r = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row
Rows("3:" & r).AutoFit


ヘルプを読みます、、、すみません。

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