• ベストアンサー

入力の簡略化

noname#182251の回答

noname#182251
noname#182251
回答No.1

QNo.3143864 から見ていますが、どうも方向が違うように思えてなりません。 >基本同じコードを使用し、一回一回コードを入力していました。 >やはり人間の手によるものですから間違いがあり、 >違うコードを入力してしまうと行方不明になってしまうのです。 この対策は重要ですが、「そのために入力回数をへらす」のではなく「誤ったコードは入力できない」ようにするべきです。その上で入力者の負担軽減を考えるのが良いでしょう。 それではどうするか? 選択対象が多くない場合はコンボボックスが便利です。 Armadillo5さんが使用しているテーブルやフィールドの名前が判らないので一応 ツアーマスター(Table) ツアーNo、ツアータイトル、ツアー情報(Field) ツアー記録(Table) ツアーNo、入力者ID(Field) と仮定します。フォームのレコードソースは SELECT ツアー記録.入力者ID, ツアー記録.ツアーNo FROM ツアー記録; コンボボックスを貼り付け 1.テーブルまたはクエリーの値 2.ツアーマスター 3.ツアーNo 4.次のフィールドに保存する→ツアーNo これで登録されているツアーNoしか選択できなくなります。同様にコンボボックスを作り3.のところだけを「ツアータイトル」に替えると、ツアーNoとツアータイトルが連動して変わります。ツアー情報も同様です。 最終の選択を次に反映させたければ Private Sub Form_AfterUpdate() stok_cd = Forms![フォーム1]![ツアーNo] End Sub Private Sub Form_BeforeInsert(Cancel As Integer) Forms![フォーム1]![コンボ1] = stok_cd End Sub みたいなことでできるでしょう。

Armadillo5
質問者

お礼

↑の補足の補足になりますが、、。 ツアーNo. ツアータイトル ツアー情報 氏名 電話番号 住所 など、メインのテーブル(ツアー参加者テーブル)があり、 フォームで入力したものはタイトルも情報も含め すべてこの中に入ります。 ツアーNo.で反映されるように、もう一つの(ツアーマスター) のテーブルにツアーNo.とツアータイトルとツアー情報が先に 登録してあります。 以下にもありますが、フォームのレコードソースは 「ツアー参加者テーブル」となっています。

Armadillo5
質問者

補足

なんとかできそうな気がしてきました。 ツアーNo.とツアータイトル、ツアー情報のテーブルが一つあり、 メインのテーブルにはそれらも入りますが、個人情報、つまり氏名、電話番号、住所など、ほかのデータも入ってきます。そうなるとフォームのレコードソースはどうなるのでしょうか?? 今現在は全部のデータが集まるメインのテーブルの名前だけがレコードソースに入っているのですが。。。 あと、前にも教えていただいたのですが、stok_cdというのはこのまま使えばいいのですよね?CDを何かに置き換える必要はありませんよね?

関連するQ&A

  • ACCESSのフォーム

    はじめまして。 個人データの管理でACCESSで名簿入力をしています。 入力のフォームを開く際に、 Private Sub Form_Open(Cancel As Integer) Dim Textname As TextBox Dim strmsg As String Dim varname As Variant Set Textname = Me.入力者表示 strmsg = "入力者氏名を入力して下さい" varname = InputBox(strmsg) '入力なき時は、フォームオープンをキャンセルします。 If varname = "" Then Cancel = True End If Textname = varname End Sub として、入力者の氏名を入力しています。 詳細は作成者でないので分かりかねますが、 フォームで非連結のテキストボックスを作成して、 なにかしら表示ができるようになっているみたいです。 これはフォームを開く際に出てきた小さい窓に一度だけ入力者氏名を 入力したら、そのままフォームを閉じるまでその氏名が反映されます。 現在、入力するものにコードというものがあるのですが、これも同じようにできないかと思っています。一日のデータ入力作業では 基本同じコードを使用し、一回一回コードを入力していました。 やはり人間の手によるものですから間違いがあり、 違うコードを入力してしまうと行方不明になってしまうのです。 コードも上記の入力者氏名と同じように、 フォームを開く際に出てくる小窓での入力は可能でしょうか? ちなみに現在商品コードを入力したら、コードの種別タイトルという ものが自動で出力される仕組みになっています。 それも反映されないといけないのです。 なにかお知恵を拝借させていただければと思います。 足りない情報があればご指摘ください。 宜しくお願いいたします。

  • Excel VBA インプットボックス空文字を入力

    いつもお世話になっています。 下記のような入力処理をインプットボックスで行いたいと考えています。 勤務先は場合によっては不要なのでパスして次に移りたいのですが 空文字だとOKをクリックしても、キャンセルをクリックしても処理が終わってしまいます。 勤務先 = InputBox("勤務先を入力") If 勤務先 = "" Then Exit Sub ActiveCell.Value = 勤務先 ActiveCell.Offset(0, 1).Select 氏名 = InputBox("氏名を入力") If 氏名 = "" Then Exit Sub ActiveCell.Value = 氏名 空文字のままOKもしくはキャンセルでも次の処理に移るにはどうしたらよいでしょうか。 お力添えをお願いいたします。

  • OKを押してもキャンセルを押しても、反応しない

    このコード、どこが間違ってるか教えてもらえますか? Sub test() Dim ret As Variant ret = InputBox("タイトルを入力してください。") If TypeName(ret) = "Boolean" Then MsgBox "キャンセルが選択されました" End If End Sub これで、キャンセルボタンを押しても、メッセージボックスが表示されません。 間違えてる部分がわかりません。

  • inputbox のキャンセルの戻り値について(VBA×エクセル)

    VBA初心者で、ユーザフォームにはまだ手出ししたくなく、INPUTBOXで値を取得しているのですが、 INPUTBOXでキャンセルボタンを押したときに、マクロを終了するように書きたいのですが、どのように記述したらよいのでしょうか? INPUTBOXからはどんな値が返ってきているかわからず、 メッセージボックスで確認してみたのですが、空欄なので、 IF RetIPT ="" then マクロ終了 endif としてみたのですが、「マクロ終了」には進んでくれず... 回答をお願いします~

  • InputBox キャンセルボタンが押された時の処理

    こんばんは。 Sub test() Dim タイトル As String タイトル = InputBox("タイトルを入力してください。") If Cancel = True Then Exit Sub ’次のコード・・・ ’次のコード・・・ End Sub このコードを実行した時に 下記のダイアログが出てきて 右のキャンセルボタンを押すと、 「If Cancel = True Then Exit Sub」 でsubステートメントを抜けたいのですが 「Cancel」の部分が 「変数が定義されていません」とエラーになってしまいます。 Dim Cancel As Boolean を追加してキャンセルボタンを押しても TrueではなくFalseになってしまいます。 回避方法を教えてください。 よろしくお願いします。

  • エクセルマクロでinputboxメソッドゼロ入力

    エクセル2007です。 以下のマクロで、inputboxメソッドで質問させると、キャンセルボタンを押すと、うまいぐあいに止まります。 しかし、0を押しても、止まってしまいます。本当は、C2にゼロと表示させたいのです。 Sub 練習() Dim myR myR = Application.InputBox(prompt:="数量を入力しなさい", Type:=1) If myR = False Then Exit Sub Range("C2").Value = myR End Sub

  • inputboxの日本語入力切替について

    VBAのinputbox関数についての質問です inputboxを使ってデータの入力をしたいのですが、日本語入力のONとOFFを自動的に切り替えられる記述はありませんでしょうか。 現在の記述は sub 入力() Dim simei As String simei = InputBox("氏名を入力してください") range("b5").Value = Simei End su のような感じです。inputboxを表示するまえに、言語バーの日本語入力がONの状態になるようにしたいのですが…。よろしくお願いします。

  • マクロ inputbox ブランクで入力した時

    いつも回答して頂きありがとうございます。 InputBoxに何も入力せず、OKを押してしまった場合、マクロの処理を終了させたいのですが、どうしたらよろしいでしょうか?宜しくお願い致します。 Sub 名前を入力する() Dim a As Long a = Application.InputBox("班を数字で入力して下さい。", Type:=1) If a = 0 Then MsgBox "キャンセルされました。", vbOKOnly Exit Sub End If With ActiveSheet .Range("E4:F5").Value = Worksheets("名前一覧").Cells(2, a).Value End With End Sub

  • エクセルVBA、入力しないと閉じないInputBox

    必ず何かを入力しないと閉じないInputBoxを作ろうと思います。 以下のコードで入力がなければ閉じないというか、Line:に戻るので、何度でも現れるInputBoxになるようですが、このやり方は正しいですか? 通常はどうやるのでしょうか? Sub test() Dim a line: a = Application.InputBox("必ず入力して下さい。", "Input!") If Len(a) = 0 Or a = False Then GoTo line MsgBox "有難う。" & a & " ですね。", , "(o。_。)oペコッ" End Sub

  • xlAPPがないと、キャンセルしても無視される

    Sub xlAPPがある場合() Dim xlAPP As Application Dim strPathName As String, vntPathName As Variant Dim strFileName As String Set xlAPP = Application 'ここでわざとESCキーかキャンセルを押す vntPathName = xlAPP.InputBox("参照するフォルダ名を入力して下さい。", , "C:\") If VarType(vntPathName) = vbBoolean Then MsgBox "キャンセルがクリックされました" Exit Sub End If End Sub Sub xlAPPがない場合() Dim strPathName As String, vntPathName As Variant Dim strFileName As String 'ここでわざとESCキーかキャンセルを押す vntPathName = InputBox("参照するフォルダ名を入力して下さい。", , "C:\")      ’無視される If VarType(vntPathName) = vbBoolean Then MsgBox "キャンセルがクリックされました" Exit Sub End If End Sub ************************************************** InputBoxを開いた時にキャンセルするふたつのプロシージャーを比較した時に、 xlAPPがないコードは、キャンセルしても無視されます。 xlAPPがどんな役割をしているのか、 xlAPPがないと、なぜ無視されるのかがわかりません。 あと、二つを比較すると、表示されるInputBoxの形式も違います。 ご教授よろしくお願いします。