|
▼ビタミン太郎 さん:
こんにちは、勘違いがあるので説明しておきます。
2度実行してもらったのは挿入しても計算が崩れないということを確認しただけで
最初に挿入してから計算しても計算結果は同じとなります。
MyArrayは実行のたびに毎回読み込み直し目的の値が何列目のセルに入っているかを格納します。
Cells(2, MyArray(1)).Valueは2行目かつ1行目のセルの値が1の列にある値となります。
>▼SS さん:
>>先ず上手く動かなかったのは変数の宣言がされていなかったからだと思います。
>>MyArrayについては配列で調べてください。
>>ひとつの案を示しただけで他にもっと良い方法もあると思いますのでこだわる必要は無いと思いますがちょっと書き足してみました。
>>先ずA1〜T1まで1〜20を、A2〜J2までA〜Jを入力する。
>>test()を実行するとH2〜T2に記号が出力されます。
>>次にH2〜T2をクリアした後A〜Hのどこかに列を挿入して
>>test()を実行してみてください。
>>
>>Option Explicit
>>
>>Sub test()
>> Dim i As Long
>> Dim MyArray(100) As Variant
>>
>> For i = 1 To Range("IV1").End(xlToLeft).Column
>> MyArray(Cells(1, i).Value) = i
>> Next i
>>
>> For i = 11 To 20
>> Cells(2, MyArray(i)).Value = Cells(2, MyArray(i - 10)).Value & _
>> Cells(2, MyArray(i - 10)).Value
>> Next i
>>End Sub
>
>上記の方法で実行できました。一回目の実行で1行目と2行目の関係がmyarrayに記録されたため、2回目の実行をしても1行目と2行目の対応関係がくずれないんですね。参考にさせていただきます。
>とても親切な回答で、もやもやがとれました。本当にありがとうございました。
|
|