• ベストアンサー

Codeがわかりません(自作のものでは動作しません)

初心者です、普段EXCELで手作業でやっていたのですが、VBAなるものの存在を知り簡単で正確にできるのではないかと挑戦しているのですが、全くうまくいきません、それで上中級者の方に教えていただきたいのですが(上中級者には簡単なことかも知れませんが)  ・シート1に   設定日、特定番号、氏名、所属、データ1、データ2、データ3~   の様に個人単位のデータがあります。 1.その中から特定番号等で検索して一個人のデータを作業用シート   (シート3)へ呼び出して 2.データの一部に変更を加える(手作業) 3.変更後のデータは設定日を当日にしてシート1に戻す 4.変更前のデータはシート2へ履歴として持っていく 5.1で検索に無かったものは新たに個人データを作成してシート1に   入れる このような作業のCodeを教えていただきたいのですが、 ヒントだけでもありがたいのですが、 どうか宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

初心者と称して、やりたいことの難しさも判らず、コードを書いてくださいという質問が多いが、ここはプログラムの下請けコーナーでは (>Codeを教えていただきたいのですが)なく、丸投げは規約でご遠慮いただくことになっている。 仕事に関連したことを出来るようになるには、数ヶ月、数年の、着手にいたるまでのエクセルとVBA(特にエクセルの方も大事)勉強期間が要るのだ。通常人には、スクールにでも通わないとVBA学習は不可能では。 ーーー それに初心者であれば、エクセルにはマクロの記録と言う便利なものが有る。質問にはマクロの記録の「マ」も出てこないのは、どういうことか。それも知らないようなら、課題に着手は、それを勉強してからだ。 ーー そのコードを云々する前に、課題の中にはどういう解決要素部分がいるのか考えること。 手作業でやるときの事が参考になる事もあり、まず文章でブレークダウンして書いて整理し、1つづつ考えること。。 (1)シート1から特定番号(氏名の方ア良いのでは?)等で検索して・・ これは操作で、A列の氏名の列で「山田」を検索してみて、マクロの記録をとれば、おおよそのコードがわかる。 これで山田が見つかった行番号が判る。見つかったセルーー>その行番号の割り出しは基礎的知識。 (2)一個人のデータを作業用シート(シート3)へ呼び出して はシート1の各列をシート3の対応列のセルへ展開するコードであろうが、シートのセルに値を代入するコードを勉強する。 右辺=左辺と言う形なんだが。基礎的事項。 (3)変更を加える(手作業) 次のステップの処理(質問の3)を開始するために、変更が終わった事を知らせる仕掛けが要る。イベントと言う考えに拠るが、コマンドボタンの貼り付けとクリックイベントをGoogle照会でもすること。初心者向けの話題ではない。 照会用語は 「VBA CommndButton 貼り付け」「「VBA CommndButton クリックイベント」 (4)変更後のデータは設定日を当日にしてシート1に戻す はシート3データをからシート1への代入なので、検索して見つかった行を変数に覚えておいて、そこの対応各列へ戻す。 (5)変更前のデータはシート2へ履歴として持っていく これは(1)の後の段階で、見つかったシート1の行の各列から、シート2の対応列に値を代入する。次にシート2のどの行に書き込むのか、行ポインターの変数が要る。 (6)1で検索に無かったものは新たに個人データを作成してシート1に入れる これはSheet1の最終行の直下に入れるとかルールが必要。 最終行を捉えるコードを勉強のこと。そこらに頻出している。 Googleで「VBA 最終行」でも紹介のこと。 やっていることは、(4)と同じで、データを持って行く行が違うだけ。 ===== これだけのことなんだが、VBAを教えてくれる人が近くにいないなら、すぐには不可能と言うぐらい難しい。 プログラムというものを(人により適性が有るようだが)甘く見ないように。 そう言っても (1)マクロの記録の応用 (2)語句を適当に捉えて、「VBA」と言う語句を添えて、Googleを照会しまくること。 (3)(1)、(2)で判らず、疑問の焦点が決まったら、このコーナーに、質問点を絞って(回答が数行で済むぐらいが目処)質問する しかないと思う。 ーー 何よりも、基礎として、Googleで「VBA Cells」で照会し、セルの扱いのコードを学ぶこと。 シート指定のセルの指定のコードを勉強のこと

goo00
質問者

お礼

確かにimogasiさんのおっしゃるとおりです。 非常に参考になりました、また勉強になりました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

何を難しく考えているのか、分りませんが 中上級者の方に聞くまでもありません 入門書程度を理解していれば出来ますよ シート1で、findを使用し検索、addressを得る addressからrowsを得る rowsをcopyし、各シートにpaste シート3dataの編集後 シート3dataのrowsを指定し、rowsをcopy シート1で、findを使用し検索、addressを得る addressからrowsを得る シート3dataをpaste と、大まかにはこんな所でしょうか まずは、マクロの記録で処理を記録しみて >このような作業のCodeを教えていただきたいのですが、 コードが教えて欲しいのであれば、n-junさんも言われているように もっと詳細を n-junさんが初級者なら、私は入門書をやっと一回読み終えた程度で申し訳ありませんが 参考にしてみてください

すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

初級者で申し訳ないですが、どこのセル(行・列)にデータがあって、どこに移動させるのか? とかの情報は必要かも知れません。

すると、全ての回答が全文表示されます。

関連するQ&A