http://oshiete1.goo.ne.jp/kotaeru.php3?q=140115
の回答を参考に、自分なりに変更させてやってみたところ、変な結果になってしまいました。

今現在の状態としては、
「支払先テーブル」というものがあり、
No  支払先名1  支払先名2
というフィールドがあります。

また「フォーム1」というフォームがあり、
そちらには
支払先No  支払先名1  支払先名2  テキスト1
というフィールドがあります。

フォーム1の支払先Noはルックアップになっていて、選択すると、「支払先テーブル」のNo・支払先名1・支払先名2のすべてが出てきて、どれかを選ぶと、Noが出るようになっています。

希望としては、上記に書いた、フォーム1の支払先Noで、選択すると自動で支払先名1、支払先名2に自動で入力されるようにしたいのです。


一番最初にもかいたように、参照ページをみながらやったので、ためしに、新しいフィールドをフォームに作成しました。(テキスト1)
こちらのコントロールソースに
=DLookUp("支払先名1","支払先テーブル","No"=[Forms]![フォーム1]![支払先No])
と入力して、実行したところ、「支払先No」が空欄の場合だけ、一番最初の「支払先名1」が出てきて、支払先Noが入っているところは空欄になってしまいました。

一体どこが間違っているのでしょうか?
よろしくお願いします。

A 回答 (2件)

失礼しました。



私は、更新後処理のイベントプロシージャで次のようにやっています。

参考になれば

Private Sub 支払先No_AfterUpdate()
me![支払先名1] = me![支払先No].Column(1)
me![支払先名2] = me![支払先No].Column(2)
End Sub

この回答への補足

2度もご回答ありがとうございます。

教えていただいたものを実行してみました。
が!変化が起きず・・・。

これは、上記でいうとフィールドの「支払先No」のところに入れていいんですよね?
そこの更新後処理のイベントプロシージャで「式ビルダ」を選択して、以上のものを入力すればできるはずなんですよね?

・・・やってみたんですが、変化がでないし、一度実行して戻る(デザインビューに)と、きれいサッパリ消えてしまっているんです。
なぜでしょうか?

まったくもって間違ったことやってますか?(汗)

何度も申し訳ありません。。。

補足日時:2001/11/26 16:44
    • good
    • 0
この回答へのお礼

すいません。
式ビルダではなく、コードビルダでしたね(^^ゞ

おかげさまでできましたっ!
本当に本当にありがとうございました!!

お礼日時:2001/11/26 16:50

空欄のときは処理をしないようにしてはいかがですか?



http://oshiete1.goo.ne.jp/kotaeru.php3?q=140115

には iif(Isnull・・・ と書いてありますが

この回答への補足

最後にそこは入れますが、今の状態では、それを入れると、すべて空欄になってしまうのです。

数値が入力されたらそれを参照して結果を入力、としたいのに、実際は
・入力されていたら >>> 空欄
・入力されていないと >>> 何か文字が入る

となってしまうのです。

補足日時:2001/11/26 15:26
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル、フォームでのVBAについて(コンボボックス)

エクセル97でフォームのコンボボックスを使用する場合の質問です。
ワークシートにコンボボックスを10個配置しました。
入力範囲はすべて同じです。
このコンボボックスで特定の項目(入力範囲6番目)を選んだ場合、次のマクロを実行するようにしようと思っています。マクロを10個書いてそれぞれのコンボボックスに登録してもいいのですが、それよりはどのコンボボックスが使用されたか特定できればすべてのコンボボックスに一つのマクロで対応できます。
コンボボックスに番号(たとえばコンボ1~コンボ10)を振ってその番号の取得ができればいいのですが、どのように記述したらよいのか検討がつきません。
お教えください。

Aベストアンサー

ゆん(yunn117)です。
まず、ByValですが、引数を値渡しするという宣言(?)です。
もうひとつ、ByRefというのがあって、それは参照渡しというモノになります。
・・・値渡しとか参照渡しってなに?というのを説明するべきなんでしょうが
説明がかなり苦手なので。。。申し訳ないです。(^-^;

で、検討がつかない、なんておっしゃってますが
Combo2では、ちゃんとNextMacro(2)って渡してるじゃないですか♪
カッコ内に入れた値が、NextMacro側に渡ってます。

ExcelのVBAのヘルプが見られる環境なら、ヘルプで調べてみてください。引数、ByVal、ByRefなど。

で、更なる質問部分についてですが
DrawingObjects("Combo1")といった表現をする場合はまとめられないんです。。。
が!
もう一度、考え直してみました。

Sub Combo1()
Call NextMacro(1)
End Sub

Sub NextMacro(ByVal SelCombo As Integer)
Dim ans As String
If Sheets("LOG").Range("C1") = False Then
Sheets("回答書").DrawingObjects("Combo" & SelCombo).ListIndex _
= Sheets("LOG").Range("H" & (30 + SelCombo)).Value
Exit Sub
End If
If Sheets("回答書").DrawingObjects("Combo" & SelCombo).ListIndex = 6 Then
ans = InputBox("地域を入れてください。", "地域設定")
Worksheets("LOG").Range("J" & SelCombo) = ans
End Sub

で、いいのでは。
ちゃんと全部キレイにまとまるやん♪
と、言いたいところなんですが、テストしてません。
動かなかったらごめんなさい。(^-^;;;

ゆん(yunn117)です。
まず、ByValですが、引数を値渡しするという宣言(?)です。
もうひとつ、ByRefというのがあって、それは参照渡しというモノになります。
・・・値渡しとか参照渡しってなに?というのを説明するべきなんでしょうが
説明がかなり苦手なので。。。申し訳ないです。(^-^;

で、検討がつかない、なんておっしゃってますが
Combo2では、ちゃんとNextMacro(2)って渡してるじゃないですか♪
カッコ内に入れた値が、NextMacro側に渡ってます。

ExcelのVBAのヘルプが見られる環境なら、...続きを読む

QAccess2003]フォーム:オプショングループウィザード:割り当てる値「Yes/No型」

4月15日にオプショングループウィザードの割り当てる値について分からなくて質問しました。アドレスは、http://okwave.jp/qa4881106.htmlです。「Yes/No型」とは、理解できました。
http://okwave.jp/qa4881106.htmlで質問したことなのですが、更に疑問点が出てきました。参考書(下記のオプショングループウィザードは、著作権の関係もあり、ラベル名を変えてあります。また、テーブル名を変えてあります。)を見たら・・・・
オプションラベル名:営業中 営業終息
既存で選択するオプション:営業中
割り当てる値:営業中 0 営業終息 -1
値を保存するフィールド:営業終息
オプショングループのスタイル:標準
オプショングループの標題:営業終息

●「Yes/No型」について理解できた時点で、オプションラベル名:営業中 営業終息を入力した後、オプショングループウィザードの割り当てる値:営業中0  営業終息 -1と」の割り当てる値についてよく分からなくなりました。
☆営業中と営業終息の割り当てる値をそれぞれ入力するのに…..
(1)「営業終息」フィールド=オプションラベル名:「営業終息」なので、割り当てる値は、-1でOKでしょうか?
(2)「営業終息」フィールドは、イコールではないので、オプションラベル名:「営業中」の割り当てる値は、0と考えてOKでしょうか?

●もし…
『オプションラベル名:営業中 営業終息』で「値を保存するフィールド:営業中」だとしたら・・・「割り当てる値は、営業中 -1 営業終息 0」かなと思いました。この割り当てる値についての考え方でOKでしょうか?

*Access初心者なので簡潔に教えてくださったら助かります。

4月15日にオプショングループウィザードの割り当てる値について分からなくて質問しました。アドレスは、http://okwave.jp/qa4881106.htmlです。「Yes/No型」とは、理解できました。
http://okwave.jp/qa4881106.htmlで質問したことなのですが、更に疑問点が出てきました。参考書(下記のオプショングループウィザードは、著作権の関係もあり、ラベル名を変えてあります。また、テーブル名を変えてあります。)を見たら・・・・
オプションラベル名:営業中 営業終息
既存で選択するオプション:営業中
割...続きを読む

Aベストアンサー

きつい言い方になるのかもしれません。

先に結論を。
1度教えてくださる方と対話できる形で、講習なり講座を受けらたらと思います。
このご質問は数日前(22日?)の焼き直しと思います。
なぜ、回答がつかなかったのか、これについて考えて見られたらと思います。
Accessで実現する疑問点/対策/処置方法以前のものと、私は思います。
(今回のご質問からは消えていますが「返す」とはなんなのか・・・とか)


以下にご質問への回答になる(?)ものを記述します。

・フィールド名の命名について
フィールド名は後々処理するうえで、参照する人(VBAやクエリ等を利用して)がイメージしやすい名前を付けます。
今回で言えば「営業終息」という名前を付けたわけですが、値はYes/No。
では、営業終息=Yes と判別した時、どのようなイメージを持たれますか。
営業終息がYesなのだから、一段落した。。。と私はイメージします。
つまり、「営業終息」とフィールド名を決定したので、イメージと同じYes=-1の値を、オプショングループに表示している「営業終息」に割り当てます。
営業終息=No は、イメージからして終息していないのだから、営業中ととらえてた方が素直。

では、もし・・・のご質問に対して、
フィールド名を「営業中」とした場合、営業中=Yes をイメージしてください。

さらに、フィールド名を「営業」とした場合、営業=Yes でどのようなイメージを持たれますか。
(この場合、イメージし難いですよね)

前回の私の回答で、補足して書いておけばよかったのですが、
オプショングループで値をデータとして格納する場合の多くは、そのフィールドにどのような値を入れるか設計されていることの方が多いです。
オプショングループのそれぞれの値を逆にして入れても・・・は、通じません。
(オプショングループは単に分かりやすい入力を行わせるために使われる部品でしかないと思っています)

ただ、オプショングループの部分に限ってみれば、どの値をどの順で設定しなければならない、ということはありません。

きつい言い方になるのかもしれません。

先に結論を。
1度教えてくださる方と対話できる形で、講習なり講座を受けらたらと思います。
このご質問は数日前(22日?)の焼き直しと思います。
なぜ、回答がつかなかったのか、これについて考えて見られたらと思います。
Accessで実現する疑問点/対策/処置方法以前のものと、私は思います。
(今回のご質問からは消えていますが「返す」とはなんなのか・・・とか)


以下にご質問への回答になる(?)ものを記述します。

・フィールド名の命名について
...続きを読む

Qコンボボックスの設定  【エクセル】

エクセルのコンボボックスについてです。
コンボボックスのリストとして


黄色
というリストをコンボボックスの‘入力範囲’に指定します。

コンボボックスの
‘コントロールの書式設定’→‘リンクするセル’
でセルを指定すると、赤を選んだとき リンクさせたセルには
「1」とでますが、なぜ1と出るのか、というのと
私は「赤」と表示させたいのですが、そのやり方を教えて頂きたいです。

コンボボックスを初めて使うので初心者的な質問だと思いますが宜しくお願いします。

Aベストアンサー

この質問もあいまいな点あるのだが。
(1)データー入力規則ーリストー元の値のドロップダウンリスト
ガあるのだが知っていて使わないのか?
これだと質問のようなことはない。選択したドロップダウンの出るセルに文字が出る。
(2)シートやユーザーフォームにコンボボックスを貼り付けているのか
A。質問者はどうもフォームのコンボボックスを使っているらしい
(「入力範囲」という言葉から)
下記Bをお勧めします。
しかし現状のままだと別のセルに一旦数字を出して(J2とでも仮定して)赤白黄うお出したいセルに
=INDEX(H1:H3,J2)
と入れると良い。
H1:H3に赤、青、黄といれて置く(入力範囲)。
ーー
B.コントロールツールボックスのコンボぼっくすを使うと
FillListRangeに例えばH1:H3  H1:H3に赤、青、黄といれ
LinkedCellを例えばD2にすれば、選択後出るには赤とでる。
ーー
>「初心者的な」といいながら、一番難しい方法でやっているようだ。

QACCESS 既存のテーブルのフィールド名をフォーム上のテキスト入力値に変更したい

いつもお世話になっております。

既存のテーブルのフィールド名を、単票フォーム上の入力値に変更
したいと思っています。
例)Aテーブル 月1 月2
  Bフォーム上のテキストA:200810 テキストB:200811
  (結果)Aテーブル 2008 200811

(テーブルデザインでの変更ではなく、コマンドボタン押下時等で行いたい)

どなたか、ご教示願います。

Aベストアンサー

フォームのボタンのイベントプロシージャの例
Private Sub コマンド_Click()
Dim TDS As DAO.Tabledefs
Dim TDF As DAO.Tabledef
Dim FLD As DAO.Field

Set TDS = CurrentDb.TableDefs
Set TDF = TDS("Aテーブル")
Set FLD = TDF.Fields("月1") '★1
FLD.Name = Me.テキストA.Value '★2
End Sub

★1定数にしておくと2回目からエラーになる。
 もし、「最初のフィールド」というなら(0)でも良い。
★2Null、空文字列、フィールド名として使えない文字のチェックを
 していないので、実際に作る時はチェックが必要

Qエクセル、コンボボックス/フォームのとコントロールツールボックスの

エクセル2000です。
今まではワークシートにフォームのコンボボックスを貼って使ってきました。
でも色を変えたり出来ないので、今度はコントロールツールボックスからコンボボックスを貼ってみました。

質問ですが、コンボボックスに表示させるリストを設定するのに、これまでのフォームのコンボボックスだと書式設定で入力範囲をカーソルをあてて一度に簡単に指定できたのですが、コントロールツールボックスのコンボボックスだとそれが出来ません。VBEditorのプロパティのところのListFillRangeの右側にいちいち手でSheet1!A1:A5のように打ち込まなければならないようです。これではけっこう手間がかかってしまいます。
わたしのやりかたが間違っているのでしょうか?

Aベストアンサー

#2です。
>この意味が良くわかりませんでした。
エクセル(VBA)ではリストに出す範囲を指定するだけですが、
VBのコンボボックスの項目(アイテム)の登録はListFillRangeがないので、AddItemを項目数だけ、記述
する必要があると言うことを言いたかったのです。
エクセル(VBA)では手数が省けていると思います。

Qエクセルのピポットテーブルで、フィールド名が正しくないとのエラーが

 エクセルのピポットテーブルについて勉強し始めたところです。
 自分で作ったエクセルシートの一覧表をピポットテーブルを使って集計しようとしていますが、「ピポットテーブルのフィールド名は正しくありません。ピポットテーブルを作成するには、ラベルの付いた列でリストとして編成されたデータを使用する必要があります。ピポットテーブルのフィールド名を変更する場合は、フィールドの新しい名前を入力する必要があります。」というメッセージがでて、集計しようとする範囲が指定されません。
 ちなみに、元のシートの一覧表の項目には、左右隣同士のセルを結合して、その下に複数の項目を設けているセルが存在します。
 お解りの方、どうかよろしくお願いします。

Aベストアンサー

セルの結合をしていることが原因だと思います。結合を解除し、それぞれの列に項目名を入力してやれば、okだと思いますよ。

Qエクセルに貼りついたコンボボックスについて

パソコン初心者です。よろしくお願いします。

インターネットの画面をコピーしてエクセルに貼り付けました。
余分な部分まで貼り付けてしまい削除したのですが、コンボボックスがどうしても削除できません。(リンクははずしました。)
ドラッグすることもできず、行を削除してもコンボボックスは残っております。どうしたらコンボボックスを削除できるでしょうか?
ご回答よろしくお願いいたします。

Aベストアンサー

こんにちは。

お使いのExcelのバージョンによって操作が違うかもしれませんので参考までに。
※以下はExcel2000での操作例です。

まず、ツールバーに「デザインモード」というアイコン(鉛筆?と三角定規とものさし
が書かれているもの)が表示されていないでしょうか?
もし表示されていなければ以下の操作をしてみて下さい。

1)メニュー操作
  「表示」→「ツールバー」をクリック
2)表示されたメニューより「Visual Basic」にチェックマークが付いていなければ、
  クリックして下さい。
3)これでツールバーが追加されて「デザインモード」というアイコンが表示され
  ていれば、下記の作業を行ってみて下さい。

次に、コンボボックスの削除を行います。
※添付画像もご覧下さい。

4)ツールバーの「デザインモード」のアイコンをクリックして、くぼんだ状態に
  して下さい。(※デザインモードをONの状態にします。)
5)シート上の消したい「コンボボックス」にマウスを当ててクリックして下さい。
  ※これで「コンボボックス」が選択状態になり、周囲にサイズ変更用の
   マークが表示されると思います。
6)上記5)でコンボボックスが選択状態になったら、[Del]キー(デリートキー)
  を押して下さい。
  ※これで「コンボボックス」が削除されれば完了です。
7)続けて、他のコンボボックスなどのコントロールを削除したい場合は、
 上記5)、6)の作業を繰り返して下さい。

8)なお、シート上のコントロールを全て削除したい場合は、下記の操作を
 行って下さい。
 ◎あらかじめ「デザインモード」をONの状態にします。
   ↓
 ◎メニュー: 「編集」→「ジャンプ」
   ↓
 ◎表示された「ジャンプ」ダイアログの「セル選択」ボタンをクリックします。
   ↓
 ◎表示」された「選択オプション」ダイアログの中の「オブジェクト」という
  項目(オプションボタン)を選択します。
   ↓
 ◎「OK」ボタンをクリックします。
   ↓
 ◎これでシート上の全てのコントロールが選択された状態になります。
   ↓
 ◎ここで[Del]キー(デリートキー)を押せば、全てのコントロールが削除
  されます。

9)作業が終了したら、「デザインモード」アイコンを再度クリックして、
  デザインモードをOFFにします。

以上で作業完了です。

もしも上手くいかなかった場合はすみません。
参考になれば幸いです。

こんにちは。

お使いのExcelのバージョンによって操作が違うかもしれませんので参考までに。
※以下はExcel2000での操作例です。

まず、ツールバーに「デザインモード」というアイコン(鉛筆?と三角定規とものさし
が書かれているもの)が表示されていないでしょうか?
もし表示されていなければ以下の操作をしてみて下さい。

1)メニュー操作
  「表示」→「ツールバー」をクリック
2)表示されたメニューより「Visual Basic」にチェックマークが付いていなければ、
  クリックして下さい。
...続きを読む

Qサブフォームからメインフォームのフィールドにエンターキーで移動したい

ACCESS2000です。
フォームの中にサブフォームを作っています。
入力される都合で、フォームの中途にサブフォームがあります。このサブフォームのレコードの数は固定しています。(今は19です)
サブフォームは帳票形式です。
サブフォームの最後のレコードでエンターキーやTABキーが押された時、メインフォームの指定するフィールドに移動するには、どうすれば良いでしょう。
使用者に特殊なキー操作を強要したくないので、VBAで記述したいのですが。

Aベストアンサー

安直なのはショートカットキーを利用することです。
ショートカットキーは、多用しますので<共通記号定数>モジュールにまとめるといいです。

Private Sub s_name_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
    SendKeys conGotoMain, False
    KeyAscii = 0
  End If
End Sub

' ----------------------------------------------------------------------------------------
' 共通記号定数
' ----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit

'
' ショートカットキー
'
Public Const conGotoMain = "^(+({HOME}))"
Public Const conGotoSub = "^(+({HOME})){UP}{TAB}"
Public Const conDefaultValue = "^(%({ }))"
Public Const conPreviousValue = "^("")"
Public Const conClearField = "+({UP}){DELETE}+({DOWN}){DELETE}"
Public Const conRestoreField = "{ESC}"
Public Const conNextField = "{TAB}"
Public Const conPreviousField = "+({TAB})"
Public Const conNextRecord = "^({PGDN})"
Public Const conPreviousRecord = "^({PGUP})"
Public Const conRequery = "+({F9})"
Public Const conNewRecord = "^({+})"
Public Const conDropDown = "{F4}"

安直なのはショートカットキーを利用することです。
ショートカットキーは、多用しますので<共通記号定数>モジュールにまとめるといいです。

Private Sub s_name_KeyPress(KeyAscii As Integer)
  If KeyAscii = 13 Then
    SendKeys conGotoMain, False
    KeyAscii = 0
  End If
End Sub

' ----------------------------------------------------------------------------------------
' 共通記号定数
' -----------------------------------------------------------------------...続きを読む

QエクセルVBA コンボボックスで強制終了

こんにちは。
エクセルVBAでいくつかのフォームを作成しているのですが、
常にではないのですが、「問題が発生したため・・・」のメッセージで
強制終了させられてしまいます。
恐らく、コンボボックスが原因かと思われるのですが。。。
申し訳ありません。教えていただけると嬉しいです。

VBA
1.Initialize
 (1)コンボボックス1リスト設定:データ2
 (2)コンボボックス2~21(20個のコンボボックス)リスト設定
               :データ数80
2.コンボボックス1_Change
 (1)コンボボックス22リスト設定:データ数80

現象
 (1)コンボボックス22を▼でなく入力し、保存すると強制終了
 (2)上記現象発生後、コンボボックス1の▼押下で強制終了
 (3)複数のPCで試したが、性能の良いPCでもたまに起こる。
  性能が悪いPCの場合、確実に起きる。
 (4)他のフォームはいくらやってもこの現象は発生しない。
  但し、コンボボックス2~21のような大量なコンボボックスはない

考えること
 (1)コンボボックスのリストの限界等はあるのでしょうか。
 (2)メモリ等の関係で発生するのでしょうか。
 (3)コンボボックスに入力不可とするか、テキストでNoを入力
  させる方法をとった方がよいでしょうか。

長々とすみません。
よろしくお願いいたします。

   

こんにちは。
エクセルVBAでいくつかのフォームを作成しているのですが、
常にではないのですが、「問題が発生したため・・・」のメッセージで
強制終了させられてしまいます。
恐らく、コンボボックスが原因かと思われるのですが。。。
申し訳ありません。教えていただけると嬉しいです。

VBA
1.Initialize
 (1)コンボボックス1リスト設定:データ2
 (2)コンボボックス2~21(20個のコンボボックス)リスト設定
               :データ数80
2.コンボボックス1_Change
 (1)コンボ...続きを読む

Aベストアンサー

こんにちは。

>VBAを組んだのは2007で今、それを動かしているのは2002です。
>こんなことをしているのが悪いのでしょうか・・・。

一般論なのですが、VBAの場合は、下位互換は期待しないほうがよい、ということです。下のバージョンでは、テキストコード(.bas)で、エクスポート・インポートをしたほうが良いかもしれません。特に、2007と2003では、ファイルフォーマットが違いますからね。

>自分で設定しない限りは、Add-inの機能はエクセルに入ってないという認識でよいでしょうか?

今、私は、「自分で設定しない限り」だったか、ちょっとはっきり答えられません。これは、当面、そのままにしておきます。

QFileMakerで特定フィールドを空欄で複製

FileMakerでレコードを複製する時に、特定のフィールドを空欄で複製する方法を教えてください。
当方デザインデータの管理をFileMakerで行っています。
得意先、担当者、管理番号、内容、サイズ、日付、デザイン内容のJPEG等をFileMakerで管理しています。
お客様から一回の案件で複数のデザイン作成や修正を行い、そのたびにFileMakerで管理しています。
フィールドの中で(デザインの)管理番号とデザイン内容のJPEGは同じものが絶対に存在することがないため、レコードを複製する時にこの2項目をコピーしないようにしたいです。
今、現在はショートカットで複製、上記の2項目を手作業で削除しています。
ボタンを作成してスクリプトを組むことになると思うのですが、どのようにすればいいでしょうか?

当方のPC環境はiMac、OS X10.6、FileMaker Ver10を使用しています。
ご回答のほど、よろしくお願いします。

Aベストアンサー

管理番号とデザイン内容のフィールドオプションで入力値の自動化で
計算式を選んで、式を「" "」にして既存値を置き換えるにチェックす
ると複製したときどちらのフィールドも空になります。

スクリプトでやるときは
 レコードの複製
 消去/管理番号
 消去/デザイン内容
 フィールドへ移動[] --指定しない


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング