うまくいけば、この質問を可能な限り正確かつ理解できるようにしたいと思います。前もって感謝します。グローバル変数ルックアップ
まず、小さな背景と私が見つけたことが働いてから、私は仕事に出られない小さな変化に就きます。コード全体を使用するのではなく、私が物事を正しく開始したことを理解するのに十分な情報を与えるスニペットを使用しました。
私は、ユーザーが使用したい文言に応じて変更するために必要な情報を格納するための追加フィールドを持つメニューシステム(ターボチャージバージョンの元のMSバージョン)を使用しているため、一方、ユーザは、それを「Goods」または「Items」または「Stuff」と呼ぶことができる。だから、私は別のテーブルにユーザーの設定を保存します(私たちはそれをtblWORDSと呼んでいます)。 ItemText、Command &引数このメニューは、通常、私が使用するItemTextからのテキストを表示します。引数は次のとおりです。しかし、VBAコードではラベルを書式設定することができないため、SWITCHBOARDテーブルにCAPTIONという新しいフィールドを追加しました。したがって、VBAコードは、レコードセットからLabelのItemTextを読み込み、| (パイプ)、私の追加されたVBAコードは、文字列のフィールドCaptionを探します。うまくいけば、十分な背景情報!!
[配電盤] [キャプション]は元々以下含まれる:これは完全に働いた(EVERYTHING含む)
"" &のDLookup( "fldProduct"、 "tblWORDS")& ""
を!!しかし...
私はWORDが必要なたびにルックアップを実行するのではなく、GLOBAL VARIABLESを作成することにしました。glProductのグローバル変数を持っています.tblWORDSテーブルから単語を正しく取得し、 。これはどこでもセッションを通じて利用可能です。
だから、私のコードのようにある
「」& glProduct &を「」(再び、すべてが含まれています):私は上記の代わりに、毎回ルックアップを実行するのグローバル変数を読み取るための文字列を置換している
次の:
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
'MY PIPE DEVIATION
If Left(Trim(rs![ItemText] & ""), 1) = "|" Then
'THIS LINE WORKS JUST FINE
'DISPLAYS CORRECTLY (rs!Caption = "" & dlookup("fldProduct","tblWORDS") & "")
szTemp = DLookup(rs![Caption], "tblWORDS")
'AS DOES THIS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!)
szTemp = "" & glbProduct & ""
'THIS DOES TOO (Just a BYREF function for testing)
szTemp = fnGetValue(DLookup(rs![Caption], "tblWORDS"))
Me("Option" & rs![ItemNumber]).Caption = szTemp
Else
If rs![ItemNumber] = 0 Then
Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")")
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("Option" & rs![ItemNumber]).Visible = False
Else
Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "")
End If
End If
rs.MoveNext
Wend
に改訂:
While (Not (rs.EOF))
Me("Option" & rs![ItemNumber]).Visible = True
'MY PIPE DEVIATION
If Left(Trim(rs![ItemText] & ""), 1) = "|" Then
'THIS WORKS (but, I'm explicitly naming the variable in code! Only entered this line to show that the variable is working!)
szTemp = "" & glbProduct & ""
'THIS DOES NOT (FYI: rs!Caption = "" & glbProduct & "")
szTemp = rs!Caption
'NOR DOES THIS (Just a BYREF function for testing)
szTemp = fnGetValue(rs!Caption)
Me("Option" & rs![ItemNumber]).Caption = szTemp
Else
If rs![ItemNumber] = 0 Then
Me("OptionLabel" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & " (" & rs![SwitchboardID] & ")")
Me("OptionLabel" & rs![ItemNumber]).Visible = True
Me("Option" & rs![ItemNumber]).Visible = False
Else
Me("Option" & rs![ItemNumber]).Caption = VBA.Trim(rs![ItemText] & "")
End If
End If
rs.MoveNext
Wend
何表示されているISは、私のリビジョン以前の製品ではなく、入力されたリテラル文字列( "" _glProduct "")です。
[OK]を実行したときに表示されませんので、だから私はコードのための読みやすいレイアウトを作成する方法を知りません - 私はタブで間隔を入力し、すべてが公開されるまでそれは素晴らしい見えた!サイトがあなたのタブやスペースなどを尊重することができないのはなぜですか?私はそれが簡単な変更になることに気づきますが、なぜそれを痛ましいものにしますか? – TimesMoney
こんにちは、ごめんなさい!他のすべてが指示を読んで失敗した場合、私はそれをすべて編集し、jonhopkinsはそれを美しくしました。もともと貼り付けたときのような感じでした!! – TimesMoney
問題ありません。私は最初もそれに問題があった。このトリックは、コードの各行の前に4つのスペースがあり、コードと通常のテキストの間に空の行があります。 Andreが言及したように、スペースを取得する簡単な方法は、コードを選択してCtrl + Kを押すか、入力ボックスの上部にある{{} 'のようなボタンをクリックすることです。別の段落が必要な場合は、段落間の空白行が行末の2つの空白よりも少し良いです。 – jonhopkins