|
「プロシージャの呼び出し、または引数が不正です」と
でてしまいました。
デバッグは
> 桁数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
'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
こんな感じです。
|
|