アレルギー対策、自宅でできる効果的な方法とは?

ウインドウズ10を使用しています。
ACCESS2016でテーブル編集時、セル内で、一部の文字列だけをコピー&ペーストするという事が多いのですが、一部の文字列だけを選択しようとしても、セル全体が選択されてしまいます。

例えば、
○○○○株式会社 東京都千代田区神田◇◇町◇◇―◇◇―◇◇
というデータの次の行に
△△△△株式会社 東京都千代田区神田✕✕町✕✕―✕✕―✕✕
というデータを作る際、
「株式会社」や「東京都千代田区神田」の部分をコピー&ペーストする、ということをしようと思っても「東京都千代田区神田◇◇町◇◇―◇◇―◇◇」全てが選択されて黒く表示されてしまい、仕方なくそれをコピー&ペーストしても、余分の「◇◇町◇◇―◇◇―◇◇」を一度に選択できないため、一文字ずつBack space等で消していかなくてはなりません。

以前は、このようなことはなく、セル内の一部の文字列だけを選択できたのですが、ある時期から突然このような状態になりました。
可能性としては
①どこかのキーボードを知らずにさわった。
②ウインドウズ・アップデートの影響?
③ウイルスに感染?
といったところです。

なお、保存してあるACCESSのデータを他のパソコン(ウインドウズ10、ウインドウズ8.1、ウインドウズ7等)で開くと問題なく操作できますので、1台のパソコンのみの問題ということになります。

A 回答 (1件)

多分、これでしょう。



フォーム上のテキストを数文字選択しようとすると行全体が選択されてしまう
https://answers.microsoft.com/ja-jp/msoffice/for …
    • good
    • 0
この回答へのお礼

助かりました

office2016の自動更新が原因だったようです。
ご回答いただいた参照先の手順通りにやったところ、
無事に解決できました。
たいへんありがとうございました。

お礼日時:2017/07/11 20:08

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

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

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

QAccessを使用して引継ぎ

Access初心者です。
よろしくお願いいたします。

Accessを使用して引継ぎをしたいと考えておりますがどのように作成したらよいか分からず悩んでおります。
アドバイスをよろしくお願いいたします。

まずメニュー画面があり登録画面と確認画面を作ります。
登録画面の内容は
日付、表題、内容の三項です。

次に悩んでいる確認画面です。
イメージは添付の画像のような形を考えております。

まず左側に登録してある日付を一覧で表示し、見たい内容の日付を選択すると右側に内容の一覧が表形式で表示されるようにしたいです。

以上のようなことを行うにはどのようにすればよいでしょうか?
※左側はテキストボックスを使用して…など

ざっくりとした質問ですみませんがよろしくお願いいたします。

Aベストアンサー

メインとなるフォームの中にサブフォームを2つ(日付一覧と内容一覧)作ってみてはどうでしょう。
ただ、登録日付が順次増える等を考えると、イメージ画像のような日付ボタンでは難しいと思いますので、
若干イメージとは異なりますが日付一覧もリストで表示するようにしてはいかがでしょうか?

具体的には、登録テーブルを作成します。内容は日付(日付型)、表題(短いテキスト型)、内容(長いテキスト型)の3項目と仮定します。
「登録テーブル」を基にクエリを2つ作ります。
Q_クエリ1:テーブルの日付のみを表示させ、日付をグループ化しておきます(同一日付で、複数の内容がある場合もあるので)
Q_クエリ2:テーブルの3つの内容を表示させるようにします

次にサブフォーム(イメージ画像の左右2つのフォーム)を作ります。
F_サブ1:帳票形式のフォームを作り、テキストボックス(Tx_日付とします)を1つ配置し、その横にボタンを1つ配置します(選択ボタンとします)。
     ボタンを配置するとウイザードが動きますがキャンセルしてボタンだけにしておいてください
     レコードソースにQ_クエリ1を指定し、Tx_日付のコントロールソースは「日付」にします
F_サブ2:帳票形式のフォームを作り、テキストボックスを2つ配置します(Tx_表題、Tx_内容とします)
     レコードソースにQ_クエリ2を指定し、Tx_表題、Tx_内容のコントロールソースをそれぞれ「表題」、「内容」にします

メインとなるフォーム(F_フォームとします)を作成し、デザインツールからサブフォームを選んで、左右に2つ配置します。
ウイザードでは左側にはF_サブ1、右はF_サブ2を選択します。次の名前の指定では例えば左をサブフォーム1、右をサブフォーム2とします。

Q_クエリ2をデザインビューで開き、「日付」の下の抽出条件に [Forms]![F_フォーム]![サブフォーム1]![Tx_日付] と記述します。

F_サブ1に配置した「選択ボタン」のクリック時イベントでマクロビルダーを開き、以下のようにマクロを設定します
 ・オブジェクトの選択
    オブジェクトの種類:フォーム
    オブジェクト名:F_フォーム
 ・コントロールの移動
    コントロール名:サブフォーム2
 ・再クエリ
    コントロール名:空白のまま

これでメイン(F_フォーム)を開くと、左に日付が並んで表示されますので、
必要な日付の横にある選択ボタンをクリックすれば、右にその日付の表題と内容がリスト表示されます。

日付の横に配置したボタンの代わりに、フォームヘッダを表示させて、そこにボタンを1つ配置し、
そのボタンのマクロを上記と同様にすれば、1つのボタンで同じ動作をさせることが出来ます。
ただし、この場合は、一度日付を選択(クリック)して、フォームヘッダのボタンを押す必要があります。

メインとなるフォームの中にサブフォームを2つ(日付一覧と内容一覧)作ってみてはどうでしょう。
ただ、登録日付が順次増える等を考えると、イメージ画像のような日付ボタンでは難しいと思いますので、
若干イメージとは異なりますが日付一覧もリストで表示するようにしてはいかがでしょうか?

具体的には、登録テーブルを作成します。内容は日付(日付型)、表題(短いテキスト型)、内容(長いテキスト型)の3項目と仮定します。
「登録テーブル」を基にクエリを2つ作ります。
Q_クエリ1:テーブルの日付の...続きを読む

Qエクセルで特定の数字だけ勝手に変換されてしまいます

エクセル2010で48,609.793と入力するのですが
入力後のセルを見てみると48,609.792999999と
勝手に変換されてしまいます。
48,609.792や48,609.794ではそのままなのですが
なぜなのでしょうか?
計算上で入力した数値を使用したく困っています。

Aベストアンサー

10進数をコンピュータ内部では2進数の形で保持することによる誤差だそうです。
なるべくこの誤差が出ないようにExcelは工夫されているそうですが、
特定の数字を入力すると「99999…」が現れるのだとか。
この質問を見て調べるまで全然知りませんでした。
https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_excel-mso_other/excel/bbaaa7f0-5e73-4d7c-aa05-6709a3357d26
https://support.microsoft.com/ja-jp/help/813530

計算式には数字を丸める関数を入れると対処できると思います。
ROUNDやROUNDUP関数で引数を3にしてみてください。
http://kokoro.kir.jp/excel/round.html

QVBAか関数でできるのでしょうか?

いつもこちらで皆さんに助けていただいてます。昨日質問しましたが画像が張り付けられていなかったので再度質問です。

”仕入表”タブに入力されたデータが横並びのデータです。
例えば、商品コード/品名/価格/色/入荷数 の並び順で、入力されています。一つの品番に対して色数は1から10個あり、色/入荷数/色/入荷数という風に構成されてます。

そこでこちらでお世話になり、仕入表に入力したデータを縦並びに色別で”在庫表”タブに表を作れるようなVBAを教えていただきました。

画像の仕入表は上の表で、下の表が在庫表に転記されたときの例です。
因みにその時のVBAはこちらです。


Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Application.Calculation = xlCalculationManual
Set wS = Worksheets("仕入表")
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row
'//「在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去
If lastRow > 1 Then
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).ClearContents
End If
cnt = 1
For i = 3 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//「仕入表」Sheetの3行目~A列最終行まで
For j = 5 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2 '//E列~i行最終列まで2行毎★
If wS.Cells(i, j) <> 0 Then '//画像で「0」が表示されているので「0」以外を追加★
cnt = cnt + 1
'//最初のデータ行のみ「仕入表」Sheetの日付をD列に表示★
If j = 5 Then
.Cells(cnt, "D") = wS.Cells(i, "A")
End If
.Cells(cnt, "E") = wS.Cells(i, "B") '//B列に「コード」を表示
.Cells(cnt, "F") = wS.Cells(i, "C") '//F列に「商品名」を表示
.Cells(cnt, "G") = wS.Cells(i, "D") '//G列に「下代」を表示
.Cells(cnt, "H") = wS.Cells(i, j) '//H列に「色」を表示
.Cells(cnt, "I") = wS.Cells(i, j + 1) '//I列に「数」を表示
End If
Next j
Next i
'//最後にD列の表示形式(日付)を「在庫表」SheetのA3セルの書式に設定★
.Range("D1", Cells(Rows.Count, 4).End(xlUp)).NumberFormatLocal = wS.Range("A3").NumberFormatLocal
End With
Application.Calculation = xlCalculationAutomatic
End Sub '//この行まで


そこで、また新たにもしできるなら教えていただきたいことが出てきました。
仕入表タブのC列に出荷した商品が出たら「出荷済」と入力していますが(画像ではA列から埋まってますが実際はA~Cは空白にしてます)、”出荷済”にしたときに在庫表タブの同じ品番の商品すべて(日付~すべての色の個数まで)を黄色の色付けにすることはできますか?
もしできるとすごく楽になるのですが・・・
それではよろしくお願いします。

いつもこちらで皆さんに助けていただいてます。昨日質問しましたが画像が張り付けられていなかったので再度質問です。

”仕入表”タブに入力されたデータが横並びのデータです。
例えば、商品コード/品名/価格/色/入荷数 の並び順で、入力されています。一つの品番に対して色数は1から10個あり、色/入荷数/色/入荷数という風に構成されてます。

そこでこちらでお世話になり、仕入表に入力したデータを縦並びに色別で”在庫表”タブに表を作れるようなVBAを教えていただきました。

画像の仕入表は上の表で...続きを読む

Aベストアンサー

No6です。
以下の箇所を修正しました。前回のマクロをこれで入れ替えてください。
1)エラー13で型が一致しません。・・・この対策
色の箇所が0以外なら処理しているのを、空白以外なら処理するようにしました。
2)今更ですが黄色の色付けを日付の列だけにすることは可能でしょうか。
日付の列だけ黄色にしました。
-------------------------------------------------------
Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Dim wns As Worksheet
Application.Calculation = xlCalculationManual
Set wS = Worksheets("仕入表")
Set wns = Worksheets("納品仕訳")
Worksheets("在庫表").Activate '追加
With Worksheets("在庫表")
'//E列で「在庫表」Sheetの最終行取得★
lastRow = .Cells(Rows.Count, "E").End(xlUp).Row
'//「在庫表」SheetにデータがあればD列2行目~I列最終行データを一旦消去
If lastRow > 1 Then
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).ClearContents
.Range(.Cells(2, "D"), .Cells(lastRow, "I")).Interior.Pattern = xlNone
End If
cnt = 1
For i = 3 To wS.Cells(Rows.Count, "A").End(xlUp).Row '//「仕入表」Sheetの3行目~A列最終行まで
For j = 5 To wS.Cells(i, Columns.Count).End(xlToLeft).Column Step 2 '//E列~i行最終列まで2行毎★
If wS.Cells(i, j) <> "" Then '//画像で「0」が表示されているので「0」以外を追加★ '修正
cnt = cnt + 1
'//最初のデータ行のみ「仕入表」Sheetの日付をD列に表示★
If j = 5 Then
.Cells(cnt, "D") = wS.Cells(i, "A")
End If
.Cells(cnt, "E") = wS.Cells(i, "B") '//B列に「コード」を表示
.Cells(cnt, "F") = wS.Cells(i, "C") '//F列に「商品名」を表示
.Cells(cnt, "G") = wS.Cells(i, "D") '//G列に「下代」を表示
.Cells(cnt, "H") = wS.Cells(i, j) '//H列に「色」を表示
.Cells(cnt, "I") = wS.Cells(i, j + 1) '//I列に「数」を表示
If wns.Cells(i + 2, "C").Value = "出荷済" Then
.Range("D" & cnt).Interior.Color = 65535 '修正
End If
End If
Next j
Next i
'//最後にD列の表示形式(日付)を「在庫表」SheetのA3セルの書式に設定★
.Range("D1", Cells(Rows.Count, 4).End(xlUp)).NumberFormatLocal = wS.Range("A3").NumberFormatLocal
End With
Application.Calculation = xlCalculationAutomatic
End Sub '//この行まで
-------------------------------------

No6です。
以下の箇所を修正しました。前回のマクロをこれで入れ替えてください。
1)エラー13で型が一致しません。・・・この対策
色の箇所が0以外なら処理しているのを、空白以外なら処理するようにしました。
2)今更ですが黄色の色付けを日付の列だけにすることは可能でしょうか。
日付の列だけ黄色にしました。
-------------------------------------------------------
Sub Sample4() '//この行から
Dim i As Long, j As Long, cnt As Long, lastRow As Long, wS As Worksheet
Dim wns As Works...続きを読む

Q私のサイトに変なアクセスがあるので、調べたところ「p●●●●●.osaknt01.ap.so-net

私のサイトに変なアクセスがあるので、調べたところ「p●●●●●.osaknt01.ap.so-net.ne.jp」というホスト名からアクセスされていることがわかりました。このホスト名を見る限り大阪からのアクセス
と思ったのですが、IPアドレス検索サイトで調べたところ、東京都品川区からアクセスされていると出てきます。なぜそうなるのでしょうか?誰か詳しい人、教えて下さい。

Aベストアンサー

IPひろば…ですかねぇ。

とりあえず、国内に割り振られたIPからのアクセスである。
って程度で、それ以上調べてもおそらく意味はない。
としておいたほうが精神衛生上いいのでは?
どうせ犯罪関係でもなければIPアドレスけら個人特定できないんだし。
# うちのSSHサーバへのアタックではさくらのVPSから。ってのはありましたけど。


途中までリモートホスト名が同じなのに…ってのは、事業者内でリモートホスト名変えずに割り当て地域を変えたとかの事情かもしれませんし、IPひろばに登録した人が間違えて登録したのかも知れない。
無線LANルータのMACアドレスで大まかな住所の特定をしている場合に、その持ち主が引っ越ししたから、以前の住所が残っていたのかも知れない。
# 今回のパターンだと、品川区でMACアドレスの収集と住所が登録され、大阪圏に引っ越ししてIPひろばに登録され、その時に参照されたMACアドレスと住所が品川区の情報しかなかったのかも知れない。
# 中古の無線LANルータ買ったら、MACアドレスと住所の収集データが以前の持ち主の住所になっていただけかも知れない。

https://saku.io/should-add-nomap-suffix-in-ssid/
など。

IPひろば…ですかねぇ。

とりあえず、国内に割り振られたIPからのアクセスである。
って程度で、それ以上調べてもおそらく意味はない。
としておいたほうが精神衛生上いいのでは?
どうせ犯罪関係でもなければIPアドレスけら個人特定できないんだし。
# うちのSSHサーバへのアタックではさくらのVPSから。ってのはありましたけど。


途中までリモートホスト名が同じなのに…ってのは、事業者内でリモートホスト名変えずに割り当て地域を変えたとかの事情かもしれませんし、IPひろばに登録した人が間違えて登録した...続きを読む

Qアイコン選択時、常に複数選択されてしまう

フォルダの中に複数のアイコンがある時、
Shiftキーを押しながらアイコンをマウスでクリックすると、
カーソルがあるアイコンからクリックしたアイコンまで全てのアイコンを一括で選択できますよね。
現在パソコンのフォルダ内が全て、Shiftキーを押さなくてもこの「複数選択されてしまう」状態になっているのですが、
どのように解除すればよいでしょうか。

説明しにくいのですけど具体的には、
デスクトップで言うと、
常にカーソルが一番左上のアイコンにあるらしく、
マウスで一番下のアイコンをクリックすると、一番上から一番下までのアイコンが全て選択されます。
勿論Shiftキーを押しているわけではありません。
矢印キーを押しても同じです。
「↓」を押すたびに1個ずつ追加で選択されてしまいます。
一番下のアイコンをダブルクリックしようものなら、上から下まで全てのアイコンが開きます。

伝わるでしょうか。
よろしくお願いします。

Aベストアンサー

固定キー機能がONになってませんか?
(shift押した状態を固定する機能)

[設定]→[コントロールパネル]→[ユーザ補助のオプション]→[キーボード]

固定キーの設定を確認してみてください。

割とありがち。

Q元ある式にSUMで修正を加えたのですが、エラーが出てしまいました。何が良くなかったのでしょうか?

Wordに、Excelのワークシートを挿入しました。
それを、AとBの2組作りました。
そして、Aで出た計算結果をaとし、Bで出た計算結果をbとします。
最後に、a+bの計算結果をBに表示させるようにしました。

最初、a+bを求める式を、次のように設定し、上手く機能しました。

Aで使った式
=SUM(G5:G33)

Bで使った式
=SUM(G4:G8)+'[C Users taka Desktop パソコンで作成する簿記 帳簿 修繕積立金(1).docx の ワークシート]Sheet1'!$G$34

このまま終わっても良かったのですが、Aの計算結果は、Aの表示上では実際に必要としない部分なので、それをBに組み込んでしまおうと思い、次のように式を修正しました。

=SUM(G4:G8)+'[C Users taka Desktop パソコンで作成する簿記 帳簿 修繕積立金(1).docx の ワークシート]Sheet1'!SUM(G5:G33)

ところがこれで、エラーが出てしまいました。
何が良くなかったのでしょうか?

Wordに、Excelのワークシートを挿入しました。
それを、AとBの2組作りました。
そして、Aで出た計算結果をaとし、Bで出た計算結果をbとします。
最後に、a+bの計算結果をBに表示させるようにしました。

最初、a+bを求める式を、次のように設定し、上手く機能しました。

Aで使った式
=SUM(G5:G33)

Bで使った式
=SUM(G4:G8)+'[C Users taka Desktop パソコンで作成する簿記 帳簿 修繕積立金(1).docx の ワークシート]Sheet1'!$G$34

このまま終わっても良かったのですが、...続きを読む

Aベストアンサー

修正したものはSUM関数の使い方が間違っているために、エラーになるのです。
 =SUM(範囲)
なのですから、別ブックであっても同じことです。
 =SUM(G5:G33)
のG5:G33の部分を別ブックにするだけですね。
 =SUM(G4:G8)+SUM('[C Users taka Desktop パソコンで作成する簿記 帳簿 修繕積立金(1).docx の ワークシート]Sheet1'!G5:G33)

他のブックのセル範囲への外部参照 (リンク) を作成する
https://support.office.com/ja-jp/article/%E4%BB%96%E3%81%AE%E3%83%96%E3%83%83%E3%82%AF%E3%81%AE%E3%82%BB%E3%83%AB%E7%AF%84%E5%9B%B2%E3%81%B8%E3%81%AE%E5%A4%96%E9%83%A8%E5%8F%82%E7%85%A7-%E3%83%AA%E3%83%B3%E3%82%AF-%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-c98d1803-dd75-4668-ac6a-d7cca2a9b95f

修正したものはSUM関数の使い方が間違っているために、エラーになるのです。
 =SUM(範囲)
なのですから、別ブックであっても同じことです。
 =SUM(G5:G33)
のG5:G33の部分を別ブックにするだけですね。
 =SUM(G4:G8)+SUM('[C Users taka Desktop パソコンで作成する簿記 帳簿 修繕積立金(1).docx の ワークシート]Sheet1'!G5:G33)

他のブックのセル範囲への外部参照 (リンク) を作成する
https://support.office.com/ja-jp/article/%E4%BB%96%E3%81%AE%E3%83%96%E3%83%83%E3%82%AF%E3%81%AE%E3%82%BB%E3%83%A...続きを読む

QVBA コンパイルエラーの解消法

皆様、いつもお世話になっております。
初心者なりに考えてVBAを組んでみたのですが、「Sub または Fanction が定義されていません」とエラー表示が出てきます。
自分なりにコードに間違いがないか検索ながらやってみたのですが、うまくいきません。

どなたか、知恵をお貸しいただけないでしょうか。



テーブルの入っているSheet1から、シート”施工体制台帳~”の該当するセルにデータのコピーを行うためのVBAです。
業者の数だけループするように組んだつもりなのですが、エラー表示のため実行ができません。
ご指摘、よろしくお願いいたします。

Sub kopipe1() '施工体制台帳
Dim sh As Worksheet
Dim sh1 As Worksheet
Dim sb As Long
Dim m As Long
Dim p As Long
Dim c As Long
Dim i As Long
Dim end1 As Long

Set sh = Worksheet("sheet1")
Set sh1 = Worksheet("施工体制台帳 (下請け) ")


end1 = sh.Range(".Cells(Rows.Count, 2)").End(xlUp)
sb = 1
p = 1

For i = 2 To end1 Step 1
sb = sb + 1
c = cell(p, 9)

sh.cell(sb, 2).Copy Destination:=.sh1.Range(c).Offset(2, 1) '会社名
sh.cell(sb, 3).Copy Destination:=.sh1.Range(c).Offset(2, 27) '代表者名
sh.cell(sb, 4).Copy Destination:=.sh1.Range(c).Offset(4, 1) '郵便番号
sh.cell(sb, 5).Copy Destination:=.sh1.Range(c).Offset(5, 1) '住所
sh.cell(sb, 6).Copy Destination:=.sh1.Range(c).Offset(6, 24) '電話番号
sh.cell(sb, 7).Copy Destination:=.sh1.Range(c).Offset(13) '業種1
sh.cell(sb, 8).Copy Destination:=.sh1.Range(c).Offset(14, 12) '許可者1
sh.cell(sb, 9).Copy Destination:=.sh1.Range(c).Offset(14, 15) '区分1
sh.cell(sb, 10).Copy Destination:=.sh1.Range(c).Offset(14, 17) '許可1-1
sh.cell(sb, 11).Copy Destination:=.sh1.Range(c).Offset(14, 20) '許可1-2
sh.cell(sb, 12).Copy Destination:=.sh1.Range(c).Offset(14, 27) '許可年月日
sh.cell(sb, 13).Copy Destination:=.sh1.Range(c).Offset(16) '業種2
sh.cell(sb, 14).Copy Destination:=.sh1.Range(c).Offset(17, 12) '許可者2
sh.cell(sb, 15).Copy Destination:=.sh1.Range(c).Offset(17, 15) '区分2
sh.cell(sb, 16).Copy Destination:=.sh1.Range(c).Offset(17, 17) '許可2-1
sh.cell(sb, 17).Copy Destination:=.sh1.Range(c).Offset(17, 20) '許可2-2
sh.cell(sb, 18).Copy Destination:=.sh1.Range(c).Offset(17, 27) '許可年月日2
sh.cell(sb, 19).Copy Destination:=.sh1.Range(c).Offset(21, 28) '健康保険
sh.cell(sb, 20).Copy Destination:=.sh1.Range(c).Offset(22, 28) '厚生年金保険
sh.cell(sb, 21).Copy Destination:=.sh1.Range(c).Offset(23, 28) '雇用保険
sh.cell(sb, 22).Copy Destination:=.sh1.Range(c).Offset(25, 3) '現場代理人指名
sh.cell(sb, 23).Copy Destination:=.sh1.Range(c).Offset(29, 7) '主任技術者氏名
sh.cell(sb, 24).Copy Destination:=.sh1.Range(c).Offset(31, 3) '資格内容
sh.cell(sb, 25).Copy Destination:=.sh1.Range(c).Offset(33, 3) '安全衛生責任者
sh.cell(sb, 26).Copy Destination:=.sh1.Range(c).Offset(25, 26) '安全衛生推進者
sh.cell(sb, 27).Copy Destination:=.sh1.Range(c).Offset(27, 26) '雇用管理責任者
sh.cell(sb, 28).Copy Destination:=.sh1.Range(c).Offset(29, 26) '専門技術者名
sh.cell(sb, 29).Copy Destination:=.sh1.Range(c).Offset(31, 26) '技術資格内容

p = p + 62
Exit For
Next i
End Sub

皆様、いつもお世話になっております。
初心者なりに考えてVBAを組んでみたのですが、「Sub または Fanction が定義されていません」とエラー表示が出てきます。
自分なりにコードに間違いがないか検索ながらやってみたのですが、うまくいきません。

どなたか、知恵をお貸しいただけないでしょうか。



テーブルの入っているSheet1から、シート”施工体制台帳~”の該当するセルにデータのコピーを行うためのVBAです。
業者の数だけループするように組んだつもりなのですが、エラー表示...続きを読む

Aベストアンサー

今のところ、変数に代入する以外のコードはほとんど間違っているわけですから、どれがどうと言えないと思います。
他の方との重複を含みます。
・Worksheet(---) ->Worksheets(----)
・sh.Range(".Cells(Rows.Count, 2)").End(xlUp)
  ↓
sh.Cells(Rows.Count, 2).End(xlUp).Row
・c = cell(p, 9)
  ↓
 c = Cells(p, 9) ただし、最後に、p = p + 62の後、Exit For では、1回キリでおしまいになってしまいます。

おそらくは、Dim c As String --Cells(p, 9).Address(0,0)
のはずです。
 
・sh.cell(sb, 2).Copy Destination:=.sh1.Range(c).Offset(2, 1) '会社名
とりあえず、Cells と sh1 のコンマは取るけれども、
sh1.Range(c).Offset(2, 1) これでは可読性を落とすばかりで分かりません。

これ自体を直すよりは、最初から作り直したほうが早そうです。
たぶん、一覧で横に並んでいるものを、別のシートの各場所に振り替えていくわけで、それが、ページごとになっているというわけでしょう。

まず、 sh1.cells(sb, 2).Copy ですが、
その列の2 を変数にすべきですね。

受ける側が、Offset で書かれてしまうと、手がつけられなくなってしまいます。

sh1.Range("J3,AJ3,J5,J6,AG7,I14,U15,X15,Z15,AC15,AJ15,I17," & _
 "U18,X18,Z18,AC18,AJ18,AK22,AK23,AK24,L26,P30,L32,L34," & _
 "AI26,AI28,AI30,AI32")

このようにまとめてしまい、以下のように纏めたものから呼び出すようにします。
しかし、実際にやってみると不具合が生じるので、それを配列で渡すようにします。

注:以下は、私の想像で書かれたものであって、実際に合っているのかは分かりません。
このようなスタイルにしてみたらという、あくでもこちらの提案です。

'//
Sub Test1()
 Dim Rng As Range
 Dim i As Long, j As Long, sb As Long
 Dim c As Variant
 Dim sh As Worksheet, sh1 As Worksheet
 Set sh = Worksheets("sheet1")
 Set sh1 = Worksheets("施工体制台帳 (下請け)")

 
 Set Rng = sh1.Range("J3,AJ3,J5,J6,AG7,I14,U15,X15,Z15,AC15,AJ15,I17," & _
 "U18,X18,Z18,AC18,AJ18,AK22,AK23,AK24,L26,P30,L32,L34," & _
 "AI26,AI28,AI30,AI32")
 
 end1 = sh.Cells(Rows.Count, 2).End(xlUp).row
 
 i = 2
 sb = 2
 For j = 1 To end1
 a = (j - 1) * 62 + 1
  For Each c In Rng.Offset((j - 1) * 62 + 1)
   c.Value = sh.Cells(sb, i).Value
   DoEvents
   i = i + 1
  Next
  i = 2
  sb = sb + 1
 Next
End Sub

今のところ、変数に代入する以外のコードはほとんど間違っているわけですから、どれがどうと言えないと思います。
他の方との重複を含みます。
・Worksheet(---) ->Worksheets(----)
・sh.Range(".Cells(Rows.Count, 2)").End(xlUp)
  ↓
sh.Cells(Rows.Count, 2).End(xlUp).Row
・c = cell(p, 9)
  ↓
 c = Cells(p, 9) ただし、最後に、p = p + 62の後、Exit For では、1回キリでおしまいになってしまいます。

おそらくは、Dim c As String --Cells(p, 9).Address(0,0)
のはずです。
 
・sh.cell(sb, 2).C...続きを読む

QACCESS2016 在庫数に応じた枚数のラベルを印刷したい

初心者ゆえよろしくお願いします。

【前提】
・商品が入っている箱に貼るラベルを必要枚数分印刷したい。
・1箱=50個入
・(例)在庫数が200個の時は、4枚印刷(200÷50=4)
・(例)在庫数が180個の時は、3枚印刷(180÷50=3.6 小数点以下は不必要)

テーブルとフィールドは以下の通りです。

テーブル:T_在庫数
フィールド:「商品名」「在庫数」

商品名 在庫数
 A   200
 B   180

どのようなクエリを作り、レポートで必要枚数分のラベルを印刷できるのか
ご伝授の程よろしくお願いいたします。

Aベストアンサー

こちらを参考に、VBA をいっさい使わない方法で。
https://web.archive.org/web/20141018090940/http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html

まず、最初の
「宛名ラベルを指定枚数 印刷する方法」をざっとご覧になって
連番テーブルを作ってください。
ここでは、固定枚数を印刷する方法ですが、
その応用になります。

次に、中ほどの
「宛名ラベルを個別に枚数を指定して印刷する方法」を
さらっと見てください。
これは [印刷枚数] というフィールドがあることを前提としていますが
応用で、枚数を計算で求めたものを使用します。

リンク先とフィールドの記述等、ちょっと替わります。
クエリの
[フィールド]
枚数: [在庫数]\50
[表示]
オフ
[抽出条件]
>=[連番]

図を参考にしてください。
なお 連番テーブルは「T_連番」という名称になっています。

一応、念のために。
https://msdn.microsoft.com/ja-jp/library/office/gg264594.aspx

こちらを参考に、VBA をいっさい使わない方法で。
https://web.archive.org/web/20141018090940/http://www.f3.dion.ne.jp/~element/msaccess/AcTipsRptHowToPrintRabelSpecificNumber.html

まず、最初の
「宛名ラベルを指定枚数 印刷する方法」をざっとご覧になって
連番テーブルを作ってください。
ここでは、固定枚数を印刷する方法ですが、
その応用になります。

次に、中ほどの
「宛名ラベルを個別に枚数を指定して印刷する方法」を
さらっと見てください。
これは [印刷枚数] というフィールドがあること...続きを読む

Qアクセス2010 クエリが遅い 300万行ほどの1tblがあり、これだけで1.5GBくらい容量を食っ

アクセス2010 クエリが遅い

300万行ほどの1tblがあり、これだけで1.5GBくらい容量を食っています。
オートIDを振っています。
このテーブルを年月などを基準に分割して行数を減らさないとダメでしょうか?
よい方法がありましたら、教えてください。

Aベストアンサー

最適化はしてますよね。
で、クエリですが、300万のデータ全てに毎回計算させたら時間がかかるのは当たり前ですよね。
計算させるならその時必要なデータにのみするとか、工夫次第で処理は全然違います。
なんなら都度必要なデータのみをワークテーブルにしてもいいと思います。

QAccess フォームのテキストボックスに入力した年月でテーブルのフィールド名を検索し、レコードを表

Access フォームのテキストボックスに入力した年月でテーブルのフィールド名を検索し、レコードを表示させることはできるのでしょうか?
方法があればご教授ください。
よろしくお願いします(❁ᴗ͈ˬᴗ͈)

Aベストアンサー

>Dim myDB As Databaseでコンパイルエラーで『ユーザ定義型は定義されていません。』のエラーが出るのですがどうしたら良いでしょうか…?

Dim myDB As Database → Dim myDB As DAO.Database
Dim myTB As TableDef → Dim myTB As DAO.TableDef
このように DAO. を付けてみたらどうですか?

それでもエラーが出るようでしたら、Accessのバージョンと、VBAエディタ のツールにある「参照設定」で
チェックの入っている項目を教えてください。

Access2000か2002でしたら、参照設定で Microsoft DAO 3.6 Object Library にチェックが入っていないのかも。。。。


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

人気Q&Aランキング

おすすめ情報