電子書籍の厳選無料作品が豊富!

お世話になります。
その昔、LOTUS123でデータベースを作成して遊んでいまして(もちろん私は初心者ですので雛型を拝借して改良を重ねて今も使用しているのですが)、最近またいじくりだして壁にぶつかってしまいましたのでこちらで質問させていただきます。
問題は、ユーザーフォームにtextboxがいくつかあってそのうちのtext1に文字列を入力してtext5にフォーカスされたときにsheetAから該当する数値を検索してtext5に自動入力されるようにするにはどうしたらよいでしょうか?
基となるsheetAには・・・
 A B C D E
1 県  県庁所在地  地域  面積  人口
2 北海道  札幌   北海道  100   20
3 東京   東京   関東   50   100
4 新潟   新潟   北陸   50   20
5 愛知   名古屋  中部   40   60
          ・ 
          ・
          ・
範囲はA2:E50
となっているものとします。
自分で試行錯誤しながら考えたスクリプトがあるのですがエラーはなく無反応でした。
-----------------------------------------------------------
Sub Gotfocus(Source As Lotustextbox)
If Typename(cntrolObj) = "LOTUSTEXTBOX" Then
Dim 範囲 As Range
Set 範囲 = CurrentDocument.Ranges("sheetA:A2..sheetA:E50")
列番号 = 2
検索値 = text1.text
text5.text = Application.WorksheetFunction.VLookup(検索値, 範囲, 列番号, False)
End If

End Sub
------------------------------------------------------
私はシステム開発者でもなんでもなくただの文系のサラリーマンですので笑わないでください。


  

A 回答 (2件)

こちらはごめんなさい,いま手元に123のリファレンスを持ってないので,発言は憶測です。




>検索値 = text1.text
>VARIANT はオブジェクトを含んでいません。

エラーは今「text1」だと思っているテキストボックスが,実際にはtext1という名前のモノでは無い(名前が間違っている)と主張しているように思われます。

念のため,試験的に何か単純なスクリプトで
text1.text = "abc"
とか
text5.text = text1.text
などのようにして,今目の前にある各テキストボックスを正しく操作出来ているか,再確認してみてはいかがでしょう。


>もしやと思いつけてみました

同様にこちらも
>If Typename(cntrolObj) = "LOTUSTEXTBOX" Then
で検査している「cntrolObj」が,意図したテキストボックスを取得していない状況だと考えています。

また仮にここを正しい記述に直せたとしても,このIF判定はプログラムの中で論理的な意味合い(位置づけ)を有していないと考えています。
    • good
    • 0
この回答へのお礼

ご指摘の通りIf Typename~を省き、スクリプトを
-------------------------------
Sub Gotfocus(Source As Lotustextbox)
inputdialog.text5.text =inputdialog. Text1.text
End Sub
-------------------------------
と書きなおしたところ、
text5にはtext1の文字列が入力されたのでテキストボックスは正常に
動作しているように思われます。

お礼日時:2010/03/15 23:50

>エラーはなく無反応でした。



この反応から推論すると,もしかすると

If Typename(cntrolObj) = "LOTUSTEXTBOX" Then

End If
の2行を,丸ごと消してしまうのでは如何でしょうか。
    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。
私も最初はその2行はつけてませんでした。
で、実行した時エラーが出てしまいました。
------------
VARIANT はオブジェクトを含んでいません。
-----------
ちょうど検索値 = text1.text
のステートメントのところでつまずいています。
それで、If Typename~の構文が至るところで用いられているので、
もしやと思いつけてみました。
※表題のスクリプトですが、

列番号=5ですね。訂正します。
keithin様、わざわざこんな私に回答していただきありがとうございます。

お礼日時:2010/03/15 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!