|
返信遅くなって申し訳ありません。
かなり勉強になりました。
ありがとうございます。
もっと早く返信できるよう注意します。
▼kanabun さん:
>▼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
|
|