ネットが遅くてイライラしてない!?

同じ言葉の入力を繰り返すことが多いので、フォームにテキストボックスに入力したデータをコピーするボタンを作りたいのですが。


イメージ1
 test   □   test
 home  ■
 USB   ■ 

イメージ2
 test   □   test
 home  ■
 USB   □   USB


(ボタンを押した場合      □)
(ボタンを押さなかった場合  ■)

簡単にできないでしょうか

このQ&Aに関連する最新のQ&A

A 回答 (1件)

test(textA) □(botanA) test(textB)


()内は、名前

botanAのクリックイベントに
if isnull(Me.textA) than
else Me.textB=Me.textA
end if

でいけると思います。
    • good
    • 0
この回答へのお礼

アドバイスありがとうございます。

if isnull(Me'マクロがみつけることができません・・・・・
というふうに出てうまくいきません。

お礼日時:2005/05/07 14:17

このQ&Aに関連する人気のQ&A

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

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

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

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

QACCESSでテーブルにあるチェックボックスを一括でYesにする方法を教えてください

アクセスのテーブルにあるYes/No型のチェックボックスを、コマンドボタンを押すことによって、全てのレコードをYes(チェックが入っている状態)又はNo(チェックが入っていない状態)にする
方法を教えてください。自分で、参考書をみながら試みたのですが、NoをYesに変えられたのですが、全部Yesにならなくて困っています。
(NoはYesになりますが、元々YesだったところがNoになってしまう)

まだ、VBA初心者ですので、小学生(実際は中年?)にも解るように教えていただければ幸いです。よろしくお願いします。

Aベストアンサー

>・・・VBA初心者ですので・・・
との事ですのでVBAがよろしいのですよね(^ ^)

テーブル名「Test」、フィールド名「Check」とします。

「Yes」にする場合。

Dim strSQL As String

strSQL = "update Test set Check = true"
DoCmd.RunSQL strSQL

で全てのレコードが更新されます。
「No」にする場合は「true」→「false」へ変更してください。

QAccess VBA でデータペーストをする

Access2002 を使っています。
クリップボードにコピーしたデータを、ボタンを押せば、指定するテキストボックス(仮称 T10 とします)に表示させたいと思っています。ボタンにどのように記述すればよいのか教えてください。

Aベストアンサー

テキストボックスが 「使用不可」 とかでなければ

  Me.T10.SetFocus
  DoCmd.RunCommand acCmdPaste

とか?

「使用不可」 なら
前後に テキストボックス を 使用可・不可にするコードを付加すればよろしいでしょう。

QAccessフォームからの外部アプリ起動方法

お世話になります。
掲題の件、Accessのフォームからボタンをクリックし、
外部アプリケーション(たとえばExcel等)を起動する
ことは可能でしょうか?

起動可能であればどのようなVBA記述をしたら良いか
教えて頂けたら幸いです。

[作成環境]
起動ボタン名: 起動
Excelのパス : 
C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE

以上、宜しくお願い致します。

Aベストアンサー

#2 さんで示された、Access クラブに書いてある方法で、オートメーション・オブジェクトを持つアプリケーションは、書いてあるように登録できます。ただし、トラブルがあると常駐してしまいますので、終わったら、必ず、きちんと閉じてください。

>(たとえばExcel等)
ということで、オートメーション・オブジェクトを持たないもの(Office以外)でしたら、以下のように、標準モジュールに書いて、ボタンに登録してみてください。

ファイル名は、確実に設定してください。

Function OpenApp()
Dim rtn As Long
 rtn = Shell("C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE", vbNormalFocus)
End Function

私は、このコードに関して、エラートラップを入れるべきかは分かりません。不安でしたら、Accessクラブのコードを参考に、エラートラップを入れてください。通常、「ファイル名を指定して実行」で開けるようなら、問題はないはずです。

#2 さんで示された、Access クラブに書いてある方法で、オートメーション・オブジェクトを持つアプリケーションは、書いてあるように登録できます。ただし、トラブルがあると常駐してしまいますので、終わったら、必ず、きちんと閉じてください。

>(たとえばExcel等)
ということで、オートメーション・オブジェクトを持たないもの(Office以外)でしたら、以下のように、標準モジュールに書いて、ボタンに登録してみてください。

ファイル名は、確実に設定してください。

Function OpenApp()
Dim rtn ...続きを読む

QAccessでレコードの複製

Accessで、ボタンをクリックすると
表示させているレコードをコピーして複製したいです。
以下のようにコードを書いてみたのですが、
「コマンドまたはアクション”追加貼り付け”は無効です」
となってしまいます。

DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPasteAppend '追加貼り付けを実行

ちなみに
DoCmd.RunCommand acCmdPasteAppend

DoCmd.RunCommand acCmdPaste
に修正しても
「コマンドまたはアクション”貼り付け”は無効です」
となって、エラーになってしまいます。

そこで、以下のようにコードを省略して
DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
ここで、手動で、ctrl+Vをすると、レコードのコピーができます。

コードの書き方が間違っているのでしょうか?
ご教授よろしくお願いいたします!

Accessで、ボタンをクリックすると
表示させているレコードをコピーして複製したいです。
以下のようにコードを書いてみたのですが、
「コマンドまたはアクション”追加貼り付け”は無効です」
となってしまいます。

DoCmd.RunCommand acCmdSelectRecord 'レコードの選択
DoCmd.RunCommand acCmdCopy 'コピー
DoCmd.RunCommand acCmdRecordsGoToNew '新規レコードへ
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPasteAppend '追加貼り付けを実行

ちなみに
DoCmd.RunCommand acCmdPasteAppend

Do...続きを読む

Aベストアンサー

#4です

> いただいたページを見てみると、
> サブフォームのコピーでエラーになるとのこと。
> 私の場合はその前の段階の、メインフォームのレコードのコピーでつまづいております・・・。

参照先の処理(AccessClub の方)は
・メインをコピーした後で
・サブフォームの元テーブルに対して該当レコードをコピー
という流れになっています。

メインをコピーする

> メインフォームのレコードを新規レコードにコピーする
> DoCmd.RunCommand acCmdSelectRecord 'カレントレコードの選択
> DoCmd.RunCommand acCmdCopy '選択レコードのコピー
> DoCmd.GoToRecord , , acNewRec '新規レコードに移動
> ' DoEvents ' (必要に応じて)
> DoCmd.RunCommand acCmdPasteAppend 'コピーレコードの追加貼り付け
>
> DoCmd.RunCommand acCmdSaveRecord '保存

部分について、みてもらいたかったのですが・・・
で、上記の DoEvnts 部分を有効にしてみてどうなりますか?

(あれを確認していた際、2007 で、その時の最新状態になっていたと思います)

#4です

> いただいたページを見てみると、
> サブフォームのコピーでエラーになるとのこと。
> 私の場合はその前の段階の、メインフォームのレコードのコピーでつまづいております・・・。

参照先の処理(AccessClub の方)は
・メインをコピーした後で
・サブフォームの元テーブルに対して該当レコードをコピー
という流れになっています。

メインをコピーする

> メインフォームのレコードを新規レコードにコピーする
> DoCmd.RunCommand acCmdSelectRecord 'カレントレコードの選択
> DoCmd.RunCommand ac...続きを読む

Qアクセスにて、フォームのテキストボックスの値をテーブルにコピーしたい

初めて質問させていただきます。宜しくお願いします。

アクセスで、
===フォーム上にある非連結テキストボックスに、日付を入力し、コマンドボタンをクリックすると、テーブルにある日付のデータをクリアし、その後フォーム上のテキストボックスに入力した日付を挿入===の方法を教えていただきたいと思います。

CurrentDb.Execute "DELETE * FROM T_設定日;"
CurrentDb.Execute "INSERT INTO T_設定日(設定日) VALUES ('Me![年月日]');"

上記でやってみたところ、データのクリアはされるのですが、その後、テキストボックスに入れた日付は入りません。エラーは出ません。

アクセス初心者で、分かりにくい説明と思いますが、宜しくお願いします。

Aベストアンサー

こんばんは。再びです。

先ほどは、]が二つついていたりしたのでそのままコピーしたらコンパイルエラーになってしまったかもしれません。ごめんなさい。
あと、"!"ではなく、"."でやってみてください。

たぶんですが、Me.と、"."までうつと、その横にぴろっとその続きに入力することができる入力候補がでてくるのではないかと思います。(この場合は、候補の中を↓ボタンでたどっていくと"年月日"というのがでてくると思います)

あと、日付型の場合は"#"を前後に設定してあげる方がよいようです。

CurrentDb.Execute "INSERT INTO T_設定日(日付) VALUES (#" & CDate(Format(Me.年月日.Value, "yyyy/mm/dd")) & "#);"

こんな感じ↑。

これを実行すると、たとえば2005/09/22とテキストボックスに指定した場合、

"INSERT INTO T_設定日(日付) VALUES (#2005/09/22#)"
というSQLが発行されます。
#というのは、ここからここまでが日付ですよと認識させてあげるものだそうです。
#ではなく、'でも動くとは思いますが、せっかくなので#で覚えたほうがよいかと思われます。
私にとってもいい勉強になりました。

もし、それでもだめだったらまた結果を教えてください。

それではよろしくお願いします。

こんばんは。再びです。

先ほどは、]が二つついていたりしたのでそのままコピーしたらコンパイルエラーになってしまったかもしれません。ごめんなさい。
あと、"!"ではなく、"."でやってみてください。

たぶんですが、Me.と、"."までうつと、その横にぴろっとその続きに入力することができる入力候補がでてくるのではないかと思います。(この場合は、候補の中を↓ボタンでたどっていくと"年月日"というのがでてくると思います)

あと、日付型の場合は"#"を前後に設定してあげる方がよいようです。

Cu...続きを読む

QAccess 同じデータをたくさんのレコード(同一列)に一度に入力するには

いつもお世話になっています。
Accessの基本的な入力に関して教えてください。
同じデータをたくさんのレコード(同一フィールド)に一度に入力するには、どうすればよいか教えてください。

Excelの列方向へのコピーと同じような感覚でできないのでしょうか?

よろしくお願いします。

Aベストアンサー

質問の回答にならないかも知れませんが・・・

1.EXCELでコピーするための元データを作成します
  ※仮にレコードが1000件ある場合はEXCELで1000行作ります。

2.Excelのデータをコピーします。

3.Accessのテーブルを開きます。

4.先頭レコードの貼り付けをしたい項目にカーソルを合わせます。(カーソルは白の十字)

5.下方向へドラッグし、項目を選択します。

6.貼り付けをします。

※貼り付けに失敗した場合、元に戻せませんので必ず元ファイルのコピーを取ってから行ってください

よろしければ、お試し下さい

QACCESSでの改行コード

ACCESSでの改行コードの入力方法を確認させてください。

ACCESSのテーブルにテキスト型のフィールドを用意し、一つのフィールドに改行が入ったデータを入力したいと考えています。

以下の方法を試してみましたが、改行コードが入っていないように思えます。

1.エクセルで一つのセルで、ALT+ENTERで文字列を入力し、テーブルにデータをインポート。

2.上記エクセルのデータをCSVで保存したものをテーブルにインポート。

これら2つのデータをテーブルで確認すると、改行はされていないですし、テーブルのデータをエクスポートしたものも改行はされていませんでした。

フィールドの設定で何か必要なんでしょうか?
それとも、テキスト型のフィールドには改行コードを持てないんでしょうか?

Aベストアンサー

> 改行コードが入っていないように思えます。

No.1の方の回答にもある通り、Excelのセル内とAccessのフィールド内とでは、
改行コードが違います。
ただ、Excelの改行コード自体は、インポートの際に取り込まれていますので、
Accessにてクエリ等を使用して変換してやれば、改行表示されるようになります。

例えば、Excelからのインポートデータが保存されているテーブルを「テーブル1」、
改行コードが入ったフィールドを「フィールド1」とすると、以下のSQL文で改行
コードを変換できます(添付画像は同じもののデザインビュー):

Update テーブル1 Set フィールド1 = Replace([フィールド1],Chr(10),Chr(13) & Chr(10));


※Chr関数は、引数で指定したコードに対応する文字を返す関数です。
  「Chr(10)」はラインフィード(=Excelのセルでの改行コード)を、
  「Chr(13) & Chr(10)」はキャリッジリターン&ラインフィード(=同・Access)を
 それぞれ表します。

※Replace関数は、第1引数で指定した文字列の中から第2引数で指定した
 文字列を探し、あった場合は第3引数で指定した文字列に置換する関数です。
 但し、Access2000では、クエリ上では使えなかったと記憶しています。
 この場合は、標準モジュールでユーザー定義関数を作成してやれば、
 その関数を使用することで同様の処理が行えます。

一例(Replace関数の省略可能な引数を全て省略したもの):

Public Function Replace2(sExp As String, sFnd As String, sRpl As String) As String
  'Replace2関数で指定した引数をそのままReplace関数に渡し、
  '戻り値をそのままReplace2関数の戻り値にします。
  Replace2 = Replace(sExp, sFnd, sRpl)
End Function

> 改行コードが入っていないように思えます。

No.1の方の回答にもある通り、Excelのセル内とAccessのフィールド内とでは、
改行コードが違います。
ただ、Excelの改行コード自体は、インポートの際に取り込まれていますので、
Accessにてクエリ等を使用して変換してやれば、改行表示されるようになります。

例えば、Excelからのインポートデータが保存されているテーブルを「テーブル1」、
改行コードが入ったフィールドを「フィールド1」とすると、以下のSQL文で改行
コードを変換できます(添付画像は...続きを読む

QAccess VBAボタンでテキストボックスを入力

access2010を使用しております。
フォームでボタンをクリックしたときに、テキストボックスを書換える
コードを作りたいのですが、

Private Sub コマンド111_Click()
ME!テキストボックス.value= "あああ"
End Sub

としても、テキストボックスは書き換わりません。
でも、ボタンをクリックした後にそのテキストボックスをクリックすると
ちゃんと「あああ」と入力されています。

つまり、ボタンをクリックしても入力はされても表示がされず、
ただ、テキストボックスをクリックすると「あああ」と表示されると言った具合です。

また、テキストボックスをクリックする以外にも
違うレコードに移動してもとのレコードに戻ってもおなじように
表示されます。

これを押した時に表示を変更させるには
どのようにすればよろしいでしょうか?

Aベストアンサー

ME!テキストボックス.value= "あああ"
のあとに
ME!テキストボックス.refresh
とするとか。

QAccessで別テーブルの値をフォームに表示したい

初めてのAccessで分からない事があり質問させてください。

<会社テーブル>
会社ID
会社名
住所

<社員テーブル>
会社ID
社員名
ソート番号

*1社に対し複数の社員レコードが存在

以上のようなテーブルがあるとします

現在「会社テーブル」を表形式で一覧表示しています
会社ID,会社名、住所とフィールドが並んでいるのですが、その後ろに「社員テーブル」のソート番号が一番若い社員名を表示したいと考えています(現状は番号関係なく表示させる方法すら分かりません)

色々いじくりまわしたのですが、初めてAccessをさわる事もあってよくわかりません

リレーション等でひっぱってくる事ができるのでしょうか?

どなたか教えて頂けませんでしょうか

何卒よろしくお願い致します

PS.Access2013で作成中です

Aベストアンサー

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FROM 社員
ORDER BY 社員.ソート番号;

2、コントロールソースに次のように書きます。

=DLookUp("社員名","社員ソートクエリ","会社ID=" & [会社ID])

http://office.microsoft.com/ja-jp/access-help/HA001228825.aspx

DLookup()については、マイクロソフトの解説を参照されてください。

【DLookup()の限界を破るにはVBAで同じ関数を作るしかない】

マイクロソフトの解説を読めば判りますが、ORDER BY 節を指定する引数が用意されていません。ですから、どうしても、"社員ソートクエリ"を作成するという手間が必要となります。そこで、SQL文を引数とするDBLookup()をVBAで書けば、その手間を省けるという算段になります。この辺りは、好みと趣味の問題。どっちでも良いと思います。そういうお断りをした上で DBLookup()を紹介しておきます。なお、ADOは、つぎのように参照設定しないと利用できません。

http://www.happy2-island.com/access/gogo03/capter00307.shtml

Public Function DBLookup(ByVal strQuerySQL As String, _
             Optional ByVal ReturnValue = Null) As Variant
On Error GoTo Err_DBLookup
  Dim DataValue
  Dim rst     As ADODB.Recordset

  Set rst = New ADODB.Recordset
  With rst
    .Open strQuerySQL, _
       CurrentProject.Connection, _
       adOpenStatic, _
       adLockReadOnly
    If Not .BOF Then
      .MoveFirst
      DataValue = .Fields(0)
    End If
  End With
Exit_DBLookup:
On Error Resume Next
  rst.Close
  Set rst = Nothing
  DBLookup = IIf(Len(DataValue & ""), DataValue, ReturnValue)
  Exit Function
Err_DBLookup:
  MsgBox "SELECT 文の実行時にエラーが発生しました。(DBLookup)" & Chr$(13) & Chr$(13) & _
      "・Err.Description=" & Err.Description & Chr$(13) & _
      "・SQL Text=" & strQuerySQL, _
      vbExclamation, " 関数エラーメッセージ"
  Resume Exit_DBLookup
End Function

単純にテーブル[会社]のみでフォームを作成し、社員表示用テキストボックスを追加。そして、そのプロパティを表示し

コントロールソース=DBLookup("SELECT 社員名 FROM 社員 WHERE 会社ID=" & [会社ID] & " ORDER BY ソート番号")

これは、以下の標準モジュールに登録したユーザ関数 DBLookup()を使っています。これで、クエリを用意しなくても目的を達成できます。

さて、かかるユーザ関数を標準ライブラリに登録したくない場合、

1、"社員ソートクエリ"を作成します。

SELECT 社員.会社ID, 社員.社員名
FR...続きを読む


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

人気Q&Aランキング