ミスチルの大名曲の数々が配信決定!! 31日間無料!!【PR】

社内で請求書をACCESSで作成しています。
構造はメイン/サブフォームを使い、サブフォームで商品名、単価、数量等を入力出来るようにしています。
スタッフからサブフォーム内の入力について①途中に追加できるようにして欲しい②順番を入れ替えられるようにしてほしいと要望が上がっています。
どの様にしたら実装可能なのでしょうか。

商品名 単価 数量 ...
B   100  1
D   200  2
C   250  3

上記のような場合に
①は「B」の上にAという商品を追加したい
②は「C」と「D」を入れ替えたい(「C」を上に移動したい)
と言う事です。
よろしくお願いします。

A 回答 (2件)

要望としては自由に順番を並び替えたいのかと思います。


行番号を追加して

行番号 商品名 単価 数量 ...
1    B   100  1
2    D   200  2
3    C   250  3

を行番号を変更し

行番号 商品名 単価 数量 ...
1    B   100  1
3    D   200  2
2    C   250  3

に、No.1の方の回答にあるように再クエリで

行番号 商品名 単価 数量 ...
1    B   100  1
2    C   250  3
3    D   200  2

と並び替える
    • good
    • 0

まず、フォームのプロパティに並べ替えを摘要する。


次に、フォームの再クエリボタンを作る。

スタッフの方に、並べ替えの際、再クエリボタンを押してもらいましょう。

VBAができなくても、マクロビルダで作れると思います。
頑張ってください!
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2017/05/15 20:47

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

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

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

Qマイクロソフト、ワード2010無料のサイトを見たのですが、2010はもう無料になっているのですか?ダ

マイクロソフト、ワード2010無料のサイトを見たのですが、2010はもう無料になっているのですか?ダウンロードしても安全ですか?

Aベストアンサー

MicrosoftOfficeが古いバージョンであっても、
無料で配布されることはありません。

ネット上には不正なソフトを配布している事は多くあります。
そのようなものに引っかかってウィルスに感染したり、
不正使用でメーカーから賠償金を取られたりする
可能性もありますので、絶対に使わないことです。

どうしてもMicrosoftOfficeを使いたいのなら、
下記のMicrosoftOfficeOnlineをお使いになるといいです。
(機能制限はありますが。)
アカウント登録(無料)が必要ですが、Word、
Excel、PowerPoint他が無料で使えます。
Webアプリなのでダウンロードやインストールは必要ありません。
https://www.office.com/
「オンラインでの作業を無料で開始する」の下の
使いたいソフトをクリックすればアカウント登録場面に行くと思います。

Q私は今日、怪我を見てもらおうとして大きい病院に行ったんですけど、そこで手術ってなって来週手術の予定だ

私は今日、怪我を見てもらおうとして大きい病院に行ったんですけど、そこで手術ってなって来週手術の予定だったんですけど、注射をしなければならなくなって、その注射は肘の裏の血管に注射するっていうやつで、私は過去にもその注射を小学校でした事があるんですけど、その時にめっちゃ腫れて、ボール投げたら痛いしっていうのが5日ぐらい続いて今はもう治ったんですけど、それがトラウマで本当に注射が無理で。
それが原因で手術をやらないってことになったんですけど、、、

※そっから母親が死ねとか足切ればいいとか

めっちゃ言ってきてめっちゃ怒らせたなと思いました。
なんかご機嫌取りできるような事ないですかね?
(母の日で花をあげるとかは絶対無視されます。謝っても無視されました。)

修学旅行の準備もしなければいけないのに母が怒ってて病院から家に帰って買い物に行けない状態で、昼ごはんもなにもないです。どーしたらいいのでしょうか?

私も悪かったと思っています。
でも針を見たらなんか気持ち悪くなります。
本当にどーしたらいいのでしょうか?

Aベストアンサー

回答の前に怪我の具合はいかがでしょうか?心配しております、お大事になさってくださいね。

さて回答ですが

それは拒否して当然でしょう、質問者様は全然悪くないですよ。
それを理解して先生もストップしたのですからね。

残念ながらお母様の機嫌を直す方法は、しばらくそっとしておくくらいしか思い浮かびません。
出来るだけ言う事をきいて良い子でいてください。

これ以上、お母様のお怒りが増さない事をお祈りいたしております。

Qエディタ って?

テキストエディタ という言葉が使われましたが、何を表しているのでしょうか?

Aベストアンサー

ワープロの簡易版みたいな感じで、ほぼWindows のメモ帳のようなものです。文字サイズ、罫線とか図名を操作するような機能はありません。テキストのみを編集(エデット)するソフトです。

Qマイクロソフトアクセス(古いやつから今のバージョンへ可能なのか教えてください)

過去にアクセス2.0で作った仕事で使うのを貰ったのですが、今現在も古いパソコンで(WIN2000)使っています。
ディスクを今の(8,1or10)にインストールしても何も起こらないのでこのままWIN2000が壊れたらおしまいなのかなとちょっと残念な気持ちです。
以前にちょっと耳にした話ではマザーボードのチップセットがどうとかでXPではできませんでした。

何とかできそうな方法ってあるのでしょうか?
何とかしてくれる業者などあるのでしょうか?
操作はそこそこ出来てもあまりPC内部には明るくないので優しくお願いします。

Aベストアンサー

これまたものすごい物が出てきましたね。

Windows 2000 が動く PC を仮想で構築し、Access 2.0 (使っているのはこのバージョン?) をインストールし、問題の MDB ファイルを使用する、って手段が近そうな気はします。
(ファイル コンバートはめちゃくちゃ苦労しますが、苦労を乗り換えられれば一番の延命措置になりえます)

仮想化された PC で Windows 2000 を動かす場合、現在使用中の PC で動いている Windows 2000 の素性によって準備が違ってきます。

結果から言うと、
1. Windows 10 Professional x64 が入っている新しい PC を導入し、
2. Hyper-V を稼働させ、
3. 仮想 PC を作成し、
4. 中古で別途購入した Windows 2000 の OS をインストールし、
5. 中古で別途購入した Access 2.0 をインストールし、
6. 問題となっている MDB を継続利用する。
となります。
新しい Windows 10 PC、中古の Windows 2000 OS と Access 2.0 が必要です。

使用中の PC にインストールされている Windows 2000 と Access 2.0 がプリインストール版なら上記の通りですが、PC とは別に購入した物であれば流用可能です。

プリインストール版の Windows を仮想化された PC で流用することもできるのですが条件が非現実的。
「同じ PC 上で、かつアップグレード版ではない別途購入した OS であれば、プリインストールされていた OEM 版の Windows OS を仮想マシンで動かすことができる」
これは Windows 2000 時代の古い PC に Windows 10 を入れて仮想マシンを動かすことになりますので無理な話でしょう。

これまたものすごい物が出てきましたね。

Windows 2000 が動く PC を仮想で構築し、Access 2.0 (使っているのはこのバージョン?) をインストールし、問題の MDB ファイルを使用する、って手段が近そうな気はします。
(ファイル コンバートはめちゃくちゃ苦労しますが、苦労を乗り換えられれば一番の延命措置になりえます)

仮想化された PC で Windows 2000 を動かす場合、現在使用中の PC で動いている Windows 2000 の素性によって準備が違ってきます。

結果から言うと、
1. Windows 10 Professional x64 が...続きを読む

Q「見出し」が「行列番号」とな?!

ご存じない方のために、と、私の備忘録のために記しておきます。

Excel 2013 の設定で発見!
シート見出しを非表示にするつもりで、[表示]→[表示 <見出し>]に付いているチェックを外してビックリポン!消えたのは何と"行列番号"なのです。
単に「見出し」とくれば、
[シート見出しを表示する](Show sheet tabs)の「見出し」と思ってしまう!
片や[行列番号を表示する](Show row and column headers)には日本語「見出し」は見当たらず!
[表示]→[表示 <見出し>]の「見出し」部分は、気を利かして「行列番号」にして欲しかったなぁ~!
英語版の「Headers」を単に直訳してたなんて、お粗末!

態々[ファイル]→[オプション]に行かずとも、ワークシートを表示させたままで、「シート見出し」を一時的に非表示にする方法を教えてください。

この機会に、他の翻訳上の不具合をご存知の方、教えてください。

Aベストアンサー

こんばんは。

>他の翻訳上の不具合をご存知の方、教えてください。

誰もレスをつけないところをみると、そんなに重視していないかもしれません。

初めて、「ポップヒント」"Pop Hint" という言葉を聞いた時に、lollipop の一種かと思いました。英語では、そんな言い方しないですね。Pop も Hint も英語では意味が違います。Pop は、Popular ですし、Hint ≒ Alluding
ふつうは、Screen Tips と言うかと思います。

そもそも、Row と Column が、行と列っていうのも変ですが。

Screeen Tips は、機能名ですが、タブなどの名称のことを、idMso と呼び、リボンカスタマイズの時には重要に役割を果たします。

・「シート見出し」を一時的に非表示にする方法を教えてください。

探してみましたが、シート見出しのオンオフのコントロールが見つかりません。(もしかしたら探し方が悪いのかもしれません)とりあえず、マクロということになってしまいます。

QAT(クイックアクション・ツールバー)では、ボタンしかつけられません。タブのグループの中では、チェックボックスも貼り付けることが可能です。

リボンカスタマイズします。

<?xml version="1.0" encoding="utf-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" >
<ribbon startFromScratch="false">
<tabs >
<tab idMso="TabHome">
<group id="Group1">
<checkBox id="DisplayWorksheetTabs" label="シート見出し" onAction="dispTabs"/>
</group>
</tab>
</tabs>
</ribbon >
</customUI >

本格的には、
C:\Users\[Your ID]\AppData\Local\Microsoft\Office\
Excel.officeUI
このファイルを書き換えてあげます。たぶん、VSTOで書き換えたほうが良いのだと思います。画像は、上記のコードを簡易的にCustomUIとしてファイルに入れた結果です。

こんばんは。

>他の翻訳上の不具合をご存知の方、教えてください。

誰もレスをつけないところをみると、そんなに重視していないかもしれません。

初めて、「ポップヒント」"Pop Hint" という言葉を聞いた時に、lollipop の一種かと思いました。英語では、そんな言い方しないですね。Pop も Hint も英語では意味が違います。Pop は、Popular ですし、Hint ≒ Alluding
ふつうは、Screen Tips と言うかと思います。

そもそも、Row と Column が、行と列っていうのも変ですが。

Screeen Tips は、機能名ですが...続きを読む

QVBAで抽出とコピペのループがうまくいかない?

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロなんですが、実際に通しても数値が0となってしまいます。
メッセージボックスで入力した後、「終了しました」と出るのですが期待通りに抽出してコピー&ペーストができていないようで困っています。
だれかたすけていただけませんか。

※抽出する項目
lightening※1
fire※2
water
leaf
wind
dragon

※1抽出する際、テキストフィルターのユーザー設定で
「lightening」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。
※2抽出する際、テキストフィルターのユーザー設定で
「fire」からはじまる「伝説・幻」を含まないという条件で抽出しなければならない。

Sub Pokemon()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim hizuke As String, wnum As String
Dim rng As Range
Dim i As Long, imax As Long
Dim j As Variant, c As Long
Dim sname As String
Dim fsh As Variant
fsh = Array("lightening", "fire", "water", "leaf", "wind", "dragon")
hizuke = InputBox("ポケモンを捕まえた日付を入力して下さい")
If hizuke = "" Then Exit Sub
If IsDate(hizuke) = False Then
MsgBox "日付不正"
Exit Sub
End If
Set sh1 = Worksheets("ポケモン図鑑")
With sh1
Set rng = .Range(.Cells(4, 5), .Cells(4, .Cells(4, Columns.Count).End(xlToLeft).Column))
End With
j = Application.Match(CLng(CDate(hizuke)), rng, 0)
If IsError(j) Then
MsgBox "該当日付がありません"
Exit Sub
End If
wnum = InputBox("選択した日付が何週目になるかを入力して下さい")
If wnum = "" Then Exit Sub
If wnum < 1 Or wnum > 5 Then
MsgBox "週不正"
Exit Sub
End If
Application.ScreenUpdating = False
c = wnum * 2 + 3
For Each sh2 In Worksheets
For i = 0 To 5
If sh2.Name = fsh(i) Then
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
Exit For
End If
Next i
Next sh2
With sh2
If .Cells(5, c) <> "" Then
.Range(.Cells(5, c), .Cells(.Cells(Rows.Count, c).End(xlUp).Row, c)).ClearContents
End If
End With
End If
Next sh2
With sh1
imax = .Cells(Rows.Count, "A").End(xlUp).Row
For i = 6 To imax
If .Range("A" & i).Value <> "" Then
sname = .Range("D" & i).Value
Select Case sname
Case "lightening","fire","water", "leaf", "wind", "dragon"
Case Else
sname = ""
End If
End Select
If sname <> "" Then
Set sh2 = Worksheets(sname)
sh2.Cells(sh2.Cells(Rows.Count, c).End(xlUp).Row + 1, c).Value = .Cells(i, j + 4)
End If
End If
Next i
For i = 32 To 40
Set sh2 = Nothing
Select Case i
Case 1
Set sh2 = Worksheets("lightening")
Case 2
Set sh2 = Worksheets("fire")
Case 4
Set sh2 = Worksheets("water")
Case 6
Set sh2 = Worksheets("leaf")
Case 7
Set sh2 = Worksheets("wind")
Case 9
Set sh2 = Worksheets("dogagon")
End Select
If Not sh2 Is Nothing Then
.Cells(i, j + 4).Value = sh2.Cells(sh2.Cells(Rows.Count, c + 1).End(xlUp).Row, c + 1).Value
End If
Next i
End With
Application.ScreenUpdating = True
MsgBox "ポケモン抽出コピペ終わり!"
End Sub

Excel2010のVBAに詳しい方、至急です。
前回も同様の質問をして、回答していただいた方のアドバイスをもとに自分でも改善?してみたつもりなのですが無理だったので再度質問させていただきます。

ポケモン図鑑という表をタイプごとにリストを抽出して、
そのデータをA列に数値が入っている行から最後の行までをコピーして、
抽出した際の条件と同じ名前のシートに所定の場所に貼り付け、最後に貼り付け先のシートのとある箇所をコピーして、ポケモン図鑑というシートにデータをペーストするというマクロ...続きを読む

Aベストアンサー

プログラム自体の動きは全くチェックしていません。
色々おかしいところがありますが 自分でデバッグくらいできるように
ならないとダメだと思います。

42行目と 50行目の「End If」はどこに掛かっていますか?
51行目の Next sh2はどこに掛かっていますか?
最後の方の「dogagon」てつづりは合ってますか?
61行目の「End If」と 62行目の「End Select」の順番は合ってますか?
67行目の「End If」はどこと以下同文

初心者レベルでいいので VBAについての勉強を先にすべきだと思います。

Qaccessフォルダを移動したらファイルが見つかりません

アクセスDBをフォルダーの移動をして保存しました。
その後、ファイル'パス名~'が見つかりませんでした>マクロのシングルステップ全てのマクロを停止となるエラーメッセージがでました。全てのボタンで同じ現象が起きます。
参照先のフォルダが原因でしょうが、どこを修正したらいいのかわかりません。
困ってます。アドバイスいただけると助かります。

Aベストアンサー

フォルダーを移動したら設定変更しなければなりません。
アクセスを起動して
ファイル → オプション → 基本設定
→ 規定のデーターベースフォルダー(C:\Users\???\Documents\)
になっているので移動先のフォルダーに変えて「OK」で閉じましょう。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

Qサブフォームに対してGoToRecordするには?

フォームに対してRequeryすると先頭のレコードへ移動してしまうので
Requeryする前のレコードの番号を取得して
Requery後にそのレコード番号へ移動したいのですが

Sub test()
i = Forms("Form").Controls("SubForm").Form.CurrentRecord
Forms("Form").Controls("SubForm").Requery
DoCmd.GoToRecord acActiveDataObject, Forms("Form").Controls("SubForm"), acGoTo, i
End Sub

これをすると、実行時エラー2498
指定した式は、いずれかの引数とデータ型が対応していません。
になりますが、
どこがおかしいのでしょうか?

Aベストアンサー

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現状・例2>
  Forms("Form").Requery
 <現状・例3>
  Forms("Form").Controls("SubForm").Form.Requery
 <代替策>
  Forms("Form").Controls("SubForm").Requery
  ※「現状・例3」との違い(→途中の「.Form」の有無)に注意。


【詳細】
> 実行時エラー2498

このエラーの直接の原因は、GotoRecordメソッドの第2引数に指定している
「Forms("Form").Controls("Subform")」の部分です。

ここに指定するのはオブジェクト名になりますが、そのデータ型は文字列型です。
一方、「~.Controls(~)」の形で指定した場合、取得できるのは
 a)オブジェクトそのもの
 b)そのオブジェクトのデフォルトプロパティ
のどちらかです(→状況によって変化します)。
(例えばテキストボックスなら、TextBoxオブジェクトまたはValueプロパティの値)

サブフォームのデフォルトプロパティは調べていませんが(汗)、少なくとも文字列
型のプロパティではないため、「型が一致しない」とのエラーとなります。
サブフォームのコントロール名を取得する場合は、
  Forms("Form").Controls("SubForm").Name
というように、Nameプロパティを明示的に指定する必要があります。

ただ、「サブフォームのレコード移動」の場合、明示的に「Name」プロパティを
指定しても解決には至りません(汗)
これは、GotoRecordメソッドの第2引数には、直接開いているオブジェクトの
名前のみが有効なためで、サブフォームを直接的に指定することはできない、
ということです。
(注:Microsoftの資料を探したわけではなく、経験則から記述していますので、
 私の勘違いでしたらご容赦願います(汗))

サブフォームのレコード移動には、冒頭に記述したとおり、「フォーカスの移動」と
「一部の引数を省略したGotoRecord」を使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

なお、これも冒頭に書きましたが、サブフォームのRequeryの仕方には幾つか
方法がありますが、Requeryの対象を「コントロールとしてのサブフォーム」にすれば、
レコード移動が発生しませんので、GotoRecord自体が不要になります。
http://www.f3.dion.ne.jp/~element/msaccess/AcTipsFrmHowToRequeryAndReturn.html

【要旨】
サブフォームのレコード移動では、対象サブフォームは引数で指定するのではなく、
SetFocusメソッドで移動後、引数を省略したGotoRecordを使用します:
  Forms("Form").Controls("SubForm").SetFocus
  DoCmd.GotoRecord , , acGoto, i

但し、「Requery前後でのレコード移動の回避」が目的の場合は、Requeryの
対象を「親フォームまたはサブフォームのFormオブジェクト」ではなく「サブフォーム
コントロール」とすればOkです。
 <現状・例1>
  Forms("Form").SetFocus
  DoCmd.Requery
 <現...続きを読む

Qこれって?どう思いますか? わたしは大型スーパーで働いているんですが、そのスーパーに万引き常習犯の8

これって?どう思いますか?

わたしは大型スーパーで働いているんですが、そのスーパーに万引き常習犯の87歳のおばあちゃんが来ます、毎回お惣菜を万引きしては事務所に連れて行かれて店長に厳しく怒られて、警察官に連れて行かれるの繰り返しです、そのおばあちゃんは見た目は弱々しく腰が曲がっていて四脚杖を使って歩いています、万引きしそうには見えないです、それでわたしが聞きたいのは、そんな87歳の万引き犯のおばあちゃんを捕まえに警察官が9人くらいきますが、弱々しいおばあちゃん1人に警察官が9人も必要なの?それと万引き常習犯のおばあちゃんに万引きを止めさせる方法って何かありますか?

Aベストアンサー

万引きは窃盗罪ですから事件として処理するなら実況見分や万引きを捕まえた人から調書や被害届、被害品の確認や返還手続きとか処理作業が大変ですから警察官も複数来ますよ。しかし、店側も常習犯なら出入り禁止にすればいいと思います。
もうそのおばあちゃんも病的な万引犯ですね。死ぬまで治らないだろうな。


人気Q&Aランキング