| 
    
     |  | ▼ponpon さん: おはようございます。
 
 
 >>このシートのJ列に
 >>
 >>   J
 >>1  150
 >>2  160
 >>3  170
 >>4  180
 >>5  190
 >>6
 >>
 >>
 >>コンボボックスの入力範囲として $J$1:$J$5
 >> リンクするセルとして $J$6
 >>
 >>と設定されているとします。
 >>
 >>この場合は、
 >>
 >>  stdval = 150
 >>
 >>の箇所を
 >>
 >>  stdval = Range("offset(j1,j6-1,0,1,1)").Value
 >>
 >
 >ここのところが分かりませんでした。
 >
 >  stdval = Range("offset(j1,j6-1,0,1,1)").Value
 >
 >この"offset(j1,j6-1,0,1,1)"は、どんな意味なのでしょうか?
 >何をヘルプで調べるとよいでしょうか?
 
 これは、ワークシート関数のOffsetですよ。
 Offset関数は、セル範囲の参照を返す関数ですから、
 
 例えば、
 
 Sub test()
 MsgBox Range("j1:j5").Address & "===" & Range("offset(j1,0,0,5,1)").Address
 MsgBox Range("j4").Address & "===" & Range("offset(j1,3,0,1,1)").Address
 
 End Sub
 
 を実行するとわかりますが、
 Range("J4") は、 Range("offset(j1,3,0,1,1)")と記述出来ます。
 
 コマンドバー「フォーム」のコンボボックスで
 
 >>コンボボックスの入力範囲として $J$1:$J$5
 >> リンクするセルとして $J$6
 
 と設定すると
 
 offset(j1,j6-1,0,1,1)
 
 がコンボボックスが選択した値に該当するセルを
 参照していることを理解してください。
 
 "j4"がセル参照の記述で
 
 Range("j4")と記述出来るのですから,
 
 同じセル参照の"offset(j1,3,0,1,1)"が
 
 Range("offset(j1,3,0,1,1)")と記述出来ることも理解してください!!
 
 よって、
 
 stdval = Range("offset(j1,j6-1,0,1,1)").Value
 
 が有効と言うことになります。
 
 因みに上記は
 
 stdval = Range("index(j1:j5,j6,1)").Value
 
 なんて記述もできます(Indexもワークシート関数です)。
 
 確認してみて下さい
 
 |  |