頭の中でわかっていることを、よくわかっていない人の視点にたって噛み砕いて説明することは難しいし、手間のかかることだとおもいます。それを実際にしてくださっていることで、私のような者はとてもとっつきやすくエクセルVBA&アクセスに取り組めるようになります。今エクセルVBAとアクセスを使ってやりたいことがあり質問サイトで質問したところご紹介頂いてここに来ました。一言お礼を言いたくて書き込ませていただきました。AMARIES10さん、コメントありがとうございます!そのようなお言葉をいただけて、本当に光栄の極みです...!この連携については私もかなり試行錯誤した結果ですので、こんな私の方法がお役に立ててとっても嬉しいです。本日夕方よりご例示いただいているツイートシステムを作ってみました。記事を読むだけでなく、自分のエクセルでの実装も無事トランザクション処理まですべて行えました!本当にわかりやすかったです。ありがとうございました。今回のVBAと同じように読み込んだ後、違う点として編集するレコードが複数の場合があります。追加で「更新対象」という列のチェックボックスにチェックが入っているものはすべて更新していく、というようなループ処理も可能なのでしょうか。簡単にご教示いただけるようでしたらご教示いただけると大変うれしいです。簡単でなかったりお忙しいようでしたら、大丈夫です。AMARIES10さん、こんにちは。実装報告して頂けたのは初めてなので嬉しいですー!ちゃんと動いて良かった!わたしが書いた記事では、編集(UPDATE文)の後、SELECT文にて再読み込みするということを「更新」と表現したつもりでしたが、その意味でよろしいでしょうか?管理者注:この記事を書いた当時名称を混同しておりまして、SELECTでのデータ読込を画面更新のつもりで「更新」、UPDATEのことを「編集」と書いてしまったため質問者さんにご迷惑をおかけしました。現在は記事のほうは修正してあります。ループを使って一部だけを再読み込みすることは可能とは思いますがおそらく結構面倒です。複数箇所をちょっとずつ再読み込みするよりは、シート上のデータを全て再描写してしまったほうが簡単で結果も同じなのではないのかな、と思います。Subのように、編集プロシージャの最後で更新プロシージャ(更新ボタンを押すのと同じ動きをするところ)を呼び出すようにしておけば、編集直後にシートが自動で更新されるのでストレスなく操作できるようになると思いますが、いかがでしょうか。ご期待に添えれば良いのですが...。AMおはようございます。お返事頂けて感激しております。ご親切にありがとうございます!>わたしが書いた記事では、編集(UPDATE文)の後、SELECT文にて再読み込みするということを「更新」と表現したつもりでしたが、その意味でよろしいでしょうか?申し訳ございません。その「更新」のことではありません。説明が下手で失礼いたしました。記事内で、「編集」で行っている処理を複数レコード分一気にやりたいというものでした。服Aと打ち込んで「更新」ボタンをおせばNo.1と2と3が表示されると思います。このとき、No.1と2を更新したいときに編集ボタンを押して、一つずつ更新したい値を入れるのではなく、明細上で数値を書き換え、たとえば対象という右端の列に「1」と記入したレコードのもののみをLOOPで見つけて「編集」処理をやっていくということです。仕様の違いがご例示のVBAとは異なってきてしまうでしょうか?すみません、VBAを始めたばかりでそのあたりの感覚がまだなくて。_)mよかったら、ご返信ください。PMああ、やはりUPDATEのことでしたね...!こちらこそすみません。上記のこと、問題なく実装できます。このようなたくさんの処理をすることこそExcel&Accessの醍醐味(?)ですよね。コメント欄では説明するスペースが小さすぎますので、記事に追記させて頂きますね。PM続けてすみません。ご例示のVBAについて、一点質問させてください。‘次のレコードに移動するLoopこの場合は、冒頭で変数iを整数型でDim宣言してください。こちらに切り替えてみました。Integerとiを整数型で宣言してみました。adoRs!f_noで止まっていました。アプリケーション定義またはオブジェクト定義のエラーです、とのことです。subと打ったら、画面にちゃんと1234と出たので変数の宣言は正しいのかと思います。cellsの中にiを入れられないのでしょうか?ググってみるとRangeという関数とともにcellsは登場してきますが、cellsが整数型を扱えないというような記述はなく、エラーの原因が特定できずにいます。cellsの方が、好きな取得項目を好きな列に配置できそうで、そちらを使ってみたいので、ご教示いただけますでしょうか。お手数おかけいたします。AMええと、まず、複数のUPDATEについては第5回の記事に追記しましたので、ご参照ください。エラーについては、申し訳ありませんが、こちらでは再現することができませんでした。そこで止まるのならばSQLの実行は通っているはずですし、.CopyFromRecordsetでデータが取り出せるならこちらの形式でも問題ないと思うのですが...。Cellsの中にiを使えることは間違いないので、レコードからフィールドを取り出すのがうまくいっていないのかな、という印象です。一応、.CopyFromRecordsetでも、SELECTに続くフィールド名の並びを変えることで取得項目の順番を調整することはできますが、ずばっとペーストできる反面、もうちょっと柔軟に使いたいとはわたしも思うところです。Sub「work」というシートに一旦吐き出しておいて、メインのアクティブシートに好きに持ってくる、ということができます。この例ではただ並び替えてるだけなので効率的とは言い難いですが、実際はSQLで吐き出されたデータを、Excel側で更に条件を絞ったり計算しながら転記してきたりなど、使い方によっては有用です。エラーの根本的な解決にはなりませんが、参考にして頂ければ幸いです。AMおはようございます。10をコピーし損ねていました。0としていることもありましたが、0行目はエクセルにないので、もしここを試しにi=1にでもしていたら1行目から出力が行われ、間違いに気づけたのですが...コピペ用のソースをテキスト形式でまで載せて頂いているのにそれをコピペしそこなうという残念な私で大変恐縮です。管理人様の貴重なお時間を頂いてしまいごめんなさい。ご例示いただいたworkシートの活用という概念を今後活用することで、ご容赦ください。PMARIES10さん、こんにちは。iがゼロでしたか!気づいてみるととても小さなことでも、原因が分からないときは本当に迷宮な気分なのはよく分かりますので、問題ありませんよ。なによりご自分で解決されて良かったです。ExcelVBAは初めてとのことでしたが、さすが他言語の経験がある方はコツを掴むのが早いですね。そちらを直して移させて頂きましたのでご了承ください。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。週間人気記事ExcelVBAでカレンダーコントロールを自作するExcelで1行・1列おきの合計を求めるSUM関数の書き方これからExcelのマクロを勉強したいという方に!簡単な練習問題作りました。-2019/09/27運営者*you非IT系の会社で社内業務アプリ開発したりWeb担してたり。ExcelとかAccessの本を書いてます。