|
▼kanabun さん:
確かにWは下記の設定で16までループ致しますね。
しかし、Uの設定範囲を設けておりますが、
効果なしということなのでしょうか??
貴殿のプログラムでマクロを組んでみます。
ありがとうございました。
>▼新参者5 さん:
>
>>>ファイルが4つあれば演算式の列は、D列、H列、L列、O列です。
>
>ほんとにそうですか?
>前に提示したCheckプログラムにちょっと追加したものです↓。
>試してみてください。
>
>Sub Test1b()
> Dim t As Long
> Dim w As Long
> Dim u As Long
> t = 4 'ファイル数
> u = 2
> For w = u To t * 4
> Debug.Print "w="; w, "u="; u, "(u+2)列="; AlphaCol(u + 2)
> u = u + 4
> Next
>End Sub
>
>Sub Test2b()
> Dim t As Long
> Dim w As Long
> Dim u As Long
> t = 4 'ファイル数
> For u = 2 To t * 4 Step 4
> Debug.Print "u="; u, "(u+2)列="; AlphaCol(u + 2)
> Next
>End Sub
>
>Function AlphaCol(i As Long) As String
> Dim n As Long, m As Long
> Dim ss As String
> n = (i - 1) \ 26 '上位 Alphabet
> m = (i - 1) Mod 26 '下位 Alphabet
> If n Then ss = Chr$(&H40 + n)
> AlphaCol = ss & Chr$(&H41 + m)
>End Function
>
>ファイルが4つのとき( t = 4のとき)
>Sub Test1b() の結果は こうです。
>w= 2 u= 2 (u+2)列=D
>w= 3 u= 6 (u+2)列=H
>w= 4 u= 10 (u+2)列=L
>w= 5 u= 14 (u+2)列=P
>w= 6 u= 18 (u+2)列=T
>w= 7 u= 22 (u+2)列=X
>w= 8 u= 26 (u+2)列=AB
>w= 9 u= 30 (u+2)列=AF
>w= 10 u= 34 (u+2)列=AJ
>w= 11 u= 38 (u+2)列=AN
>w= 12 u= 42 (u+2)列=AR
>w= 13 u= 46 (u+2)列=AV
>w= 14 u= 50 (u+2)列=AZ
>w= 15 u= 54 (u+2)列=BD
>w= 16 u= 58 (u+2)列=BH
>
>(u+2)の 列は D,H,L,P ... と変化していますよ?
>さらに、BH列までループしてますよ? ファイルは4つなのに??
>
>
>>uの配列は貴殿がおっしゃる通りに組んだ場合、
>>公式(演算式)を参照する列はズレないのですか?
>ですから、正解の列番号の並びが D,H,L,P,X... であれば ズレは無いといえるし、
>>>ファイルが4つあれば演算式の列は、D列、H列、L列、O列です。
>であれば、 Step 4 のルールを途中で逸脱しているから、ズレは必ず生じると
>いえます。
>>
>>まだ貴殿のマクロを実行していませんので何とも言えませんが・・・
>
>>私が組んだVBAだと、U+2列の演算式の参照する列がズレる訳を
>>できましたらお教え頂けないでしょうか。
>
>何をどうやっているかについての説明が不十分ですので、「訳」はこちらでは
>わかりません。
>どうかステップ実行して 変数の変化と処理の流れをご自分でデバッグしてください
>。
>>
>>更に質問させて頂きますと、
>>Wは確かにいらない変数ですが、
>>Wがあっても問題にならないのでは・・・
>
>不要な変数は削除して、プログラムの可読性を高めるべきです。
>
>可読性といえば、さんざん言われていることですが、
>インデントをしっかりつけましょう。
|
|