質問: Excelについて。 シートAに、計算表があります。 セルa1に入力した値によって、いくつかのExcel関数を利用して、 セルb1に結果を出力しています。 いつも、手入力でセルa1に値を入力して結果を求めていますが。 今度、シートBに膨大な入力するための数値があるので、VBAで自動化できないかと考えています。 今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 シートAのa1に入力値を代入して、すぐに結果b1の値を結果出力セルに代入していいのでしょうか? 計算表(シートA)での計算を時間をおく必要があるのでしょうか?=一旦、他のセルを選択するなど。 よろしくお願いします。 ・計算表での計算時間は、1秒未満です。 ・計算表の計算過程もVBAで書けば済む話ですが、プログラミングには疎いので、計算表をそのまま利用したいと考えています。=入力の代入だけVBAで書いていきたいと思います。 ・その他、アドバイスなどいただければ幸いです。 よろしくお願いします。 Excel2010
回答: >今回の質問は、VBAで記述する際に、シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力していこうと考えています。 との事ですが、「シートBのどのセルに入力されている値を代入したいのか」という肝心な事に関しての説明が抜けています。 その「代入したい値」が入力されている多数のセルの中で、最初のセルはどのセルなのでしょうか? 又、最初のセルのデータの処理が終わった後で、また次のデータの処理をしなければならないと思われますが、その次のデータが入力されているセルは、最初のセルの下にあるのか、それとも右にあるのか、どちらなのでしょうか? 又、例えば最初のセルに対する次のセルの相対的な位置は、1マスずれた所にあると決まっているのでしょうか? もしかしますと、1行おきとか、1列おきといった飛び飛びの位置にあるセルを参照しなければならないなどという事は無いのでしょうか? そういった肝心の情報に関して質問者様から説明して頂かなければ、VBAを作るために必要不可欠な情報が不足しているのですから、質問者様が希望されているVBAなど誰も作る事など出来ませんよ。 仮の話として、質問者様が実際に使われているシートBとは異なるレイアウトの表を用いる場合のVBAでしたら作る事が出来るかも知れませんが、そのVBAを参考にして、実際のシートBのレイアウトに合わせたVBAを質問者様御自身は作る事が出来るのでしょうか? もしも出来ないか難しいと思われるのであれば、必要な情報は全て開示して頂くよりほかは御座いません。 そして、VBAを作る上で必要となる情報は他にもあります。 例えば、ワークシート関数を使って処理を行う際に、数値計算を行う関数に、文字列データを処理させようとしますとエラーとなります。 そして、 >シートAの入力セルa1に、シートBの入力値を1つずつ代入していき、結果のセルb1をシートBの入力値の隣に出力 という作業をVBAによって行う際に、シートBに入力されている値に何か間違いがあって、ワークシート関数で処理できない値となっていた場合には、そこでシートAのB1セルに表示される結果がエラーとなり、それが原因でVBAの動作もエラーとなり、VBAが途中で停止する恐れも若しかしますとあるかも知れません。 万が一そうなりますと、質問者様はそのエラーに対処できるのでしょうか? その様な事態を避けるためには、「シートAのA1セルに入力しても良い値とはどんな値なのか」という事や、「シートAのA1セルに入力してはいけない値とはどんな値なのか」という事、及び、「もしシートBに、シートAのA1セルに入力してはいけない値があった場合には、単にそのセルは無視して次の処理を行えば良いのか、といった、どんな対応をVBAにさせれば良いのか」という事に関しても御説明願います。