Excel VBA質問箱 IV

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

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


12200 / 76734 ←次へ | 前へ→

【70060】Re:最大文字数をselect
発言  kanabun  - 11/10/12(水) 21:15 -

引用なし
パスワード
   ▼free さん:
>このコードの場合、最初にIf L > myStLen Thenを通過する時に最大文字数mystlenが無いと思うのでですがエラーになりません。
>最初の比較はどうなるのか概念がわかりません。
>比較対照がないのになぜ?

変数myStLen はLong型(数値型)の変数として宣言しています。
よって、宣言した時点で 数値0 に「初期化」されています。
最初の比較は
  If L > 0 Then
となって、ただしく比較されています。


>もうひとつ L = Len(.Cells(i, 1).Value)だったら.valueいらないのでは?
>.textにするならわかるけど。
>基本的には.textの方がいいのかな?

Cells(i,1) ではセル自身(Rangeオブジェクト)です。比較したいのは
セルの値ですから .Value プロパティを省略しないのが原則です。
また(おっしゃるように)せっかくプロパティを使うんなら(文字列の
比較だから) .Textプロパティを使ったほうがいい、ということはいえる
でしょうね。
(とくに調べる範囲の中に、数値や空白セルが存在するとき)

あと、実際にどのくらいの行数があるのか分かりませんが、
調べたいA列のデータを以下のように配列に入れておいて、
Loopの中で最大文字数の行を調べてから、そのセルに移動する
というより効率的な(画面がチカチカしない)方法もあることを
覚えておくのも無駄ではないと思います。

Sub Try1()
 Dim v, i As Long
 Dim MaxLen As Long '最大文字数
 Dim MaxPos As Long '最大文字数のある行
 
 v = Application.Text(ActiveSheet.UsedRange.Columns(1), "@")
 For i = 1 To UBound(v)
   If Len(v(i, 1)) > MaxLen Then
     MaxLen = Len(v(i, 1))
     MaxPos = i
   End If
 Next
 'Application.Goto Cells(MaxPos, 1), True
 'または
 Cells Cells(MaxPos, 1).Select
End Sub

5 hits

【70054】最大文字数をselect free 11/10/12(水) 18:55 質問
【70055】Re:最大文字数をselect kanabun 11/10/12(水) 19:26 発言
【70056】Re:最大文字数をselect Hirofumi 11/10/12(水) 19:27 回答
【70058】Re:最大文字数をselect free 11/10/12(水) 19:55 お礼
【70057】Re:最大文字数をselect kanabun 11/10/12(水) 19:36 発言
【70059】Re:最大文字数をselect free 11/10/12(水) 21:00 発言
【70060】Re:最大文字数をselect kanabun 11/10/12(水) 21:15 発言
【70125】Re:最大文字数をselect free 11/10/16(日) 22:50 お礼

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