|
ポンタさーん、即レスありがとうございます。
こちらでもだめです。
a = Log(a)でひっかかってました。
私の環境はWin98、EXCEL2000です。
実際にはXP、EXCEL2000で走らせたいので
(テストの環境が整ってなくて・・・)
もしかしたらうまく行くかもしれません。
結果はお時間ください。
▼ポンタ さん:
>「プロシージャの呼び出し、または引数が不正です」と
>でてしまいました。
>デバッグは
>> 桁数1 = Int(Log(WorksheetFunction.Max(Range("C:C"))) / Log(10)) + 2
>
>こちらでテストした限りではエラーは出ていないので、よく分かりません。
>(Win2000,Excel2000でテストしてます)
>
>以下のコードだとどうなりますか?
>
>Sub test1()
> Dim a
> a = WorksheetFunction.Max(Range("C:C"))
> a = Log(a)
> a = a / Log(10)
> a = a + 2
> a = Int(a)
> MsgBox (a)
>End Sub
>
>
>>> 桁数1 = Int(Log(WorksheetFunction.Max(Range("C:C"))) / Log(10)) + 2
>
>> ↑ここのLog(*)でCの桁数を決めるんですよね?
>
>そうです。
>最大値が"30000"の時はスペースを含めて6文字になれば良いと思うので、
>6を返すように式を組み立ててあります。
>
>> ↓ごめんなさい、このFor文がわからなくて・・・
>> もしよければ指示の内容を教えてください。何から何まですみません。
>>
ご丁寧にありがとうございます!!!
>
> For i = 1 To Range("A65536").End(xlUp).Row
↑ここはRange("A")でもいいんですよね?
やっぱり書き込んだほうが良いのでしょうか。
> 'MyStrにA列の値をセット MyStr = "0001"
> MyStr = Cells(i, 1).Value
> 'MyStrの文末にB列の値を付け足す MyStr="0001030625"
> MyStr = MyStr & Cells(i, 2).Value
> 'Len(Cells(i, 3).Valueで"1000"の文字数を数える = 4
> '桁数1 = 6だから String(2, " ")となる
> 'これは、スペース2文字(" ")を返す
> 'よって MyStr="0001030625 " となる
> MyStr = MyStr & String(桁数1 - Len(Cells(i, 3).Value), " ")
> 'C列の値を付け足す MyStr="0001030625 1000"
> MyStr = MyStr & Cells(i, 3).Value
> 'スペースを付け足す MyStr="000130625 1000 "
> MyStr = MyStr & String(桁数2 - Len(Cells(i, 4).Value), " ")
> 'D列の値を付け足す MyStr="000130625 1000 50"
> MyStr = MyStr & Cells(i, 4).Value
> 'テキストファイルに書き込む
> Call objText.WriteLine(MyStr)
> Next
>
>こんな感じです。
一度桁数からCを引いた結果をくっつけてから
Cを書くわけですね。わかりました、わかりました。
|
|