| 
    
     |  | ▼ビタミン太郎 さん: 
 先ず上手く動かなかったのは変数の宣言がされていなかったからだと思います。
 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
 
 >▼SS さん:
 >>先ず一番簡単なのは出力データをAA列からはじめるのをBA列からはじめるように変更することだと思います。入力項目が増えることが予想されるのに入力欄に余裕を残さないのは解せません。
 >
 >なるほど。その通りだと思いました。拡張性のあるものを作ろうと思いすぎたばかりに入力欄に余裕を持たせるということにまったく気がつくことができませんでした。
 >
 >>後は1行目にでも項目欄を作りこの項目名で検索して対応すると言うのはいかがですか?
 >>たとえば項目名を数字にしておいて
 >>  For i = 1 To Range("A1").End(xlToRight).Column
 >>    MyArray(Cells(1,i).Value) = i
 >>  Next i
 >>  Cells(MyRow,MyArray(27)).Value=Cells(MyRow,MyArray(1)).Value * 3
 >>
 >>※追加した列にはダブらない数字を入力する
 >
 >上記コードを入力してみたのですが上手くいきませんでした。myarrayは変数という認識でよろしいんでしょうか?
 >とりあえずarray関数を調べていけば理解できると思うので頑張ってみます。
 >ご回答ありがとうございました。
 
 |  |