|
おはようございます。
>こんにちは,9月7日の質問『プロシージャが大きすぎて処理出来ない』を参考
>に,ワークシートの指定した位置へのデータ投入について作成させて頂いてま
>すが,このような事例を利用して、逆に指定した位置からユーザーフォーム上に
>データを表示させると言う事は可能でしょうか?
ここまでを読めば、下記のコードの変数rwが入力データとして
rw-------> 関数 --------> t_valとidxを出力
という関数があればよいという解釈ですが・・・・。
そうだとすれば、一例ですが、
標準モジュールに
'================================================================
Public Type value_set
t_val As Long
idx As Long
End Type
'===================================
Sub main()
Dim test As value_set
test = get_val(25)
MsgBox test.t_val 'rwが25の時のt_val
MsgBox test.idx 'rwが25の時のidx
MsgBox get_val(100).t_val 'rwが100の時のt_val
MsgBox get_val(100).idx 'rwが100の時のidx
End Sub
'===============================================
Function get_val(ByVal rw As Long) As value_set
With get_val
Dim retcode As Long
retcode = 1
For .t_val = 1 To 34
For .idx = 1 To 5
If .t_val * 5 + .idx + 3 = rw Then
retcode = 0
Exit For
End If
Next .idx
If retcode = 0 Then Exit For
Next .t_val
If retcode <> 0 Then .t_val = 0
End With
End Function
mainを実行してみてください。
指定したrwに対するt_valとidxが求めることが出来ます。
とこういうことですか??
>
>この例では,2つの指定要素に基づいて投入位置を計算して位置を特定して
>います。
ですね!!よって、逆を行うとなると、一つの値から二つの要素を見つけなければ
なりませんんね!!この事象の場合は、簡単に出来ましたけど・・。
簡単ではない場合もあると思います。
>何か,VLookup関数やIndex関数を利用したケースよりも簡単そうに出来そうな
>感じがしまして....と言うよりVLookup関数やIndex関数の利用に悪戦苦闘し
>ているのが本音ですが....
うーん、これは、やりたいことにもよりますが。
少なくともVLookup関数やIndex関数は、
それぞれの関数の入力データが何なのか、それによってどんな出力データが返される
関数なのかははっきりHelpに書いてあります。
その関数の機能がヒロシさんがなさりたい処理に使用できるのか否かは、
その仕様がはっきりしないとわかりません。
私の解釈では、上記のコードになります。
検討してみてください。
|
|