|
▼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もワークシート関数です)。
確認してみて下さい
|
|