• 締切済み

ユーザーフォームを設定して任意列のデータを他の列(複数)にコピーしたい。

EXCEL VBAについての質問です。 初心者です。宜しくお願い致します。 使用環境はWindows 2000 service pack4 Excel 2000. =質問= VBAのユーザーフォームで任意列のデータを他の列(複数)に コピーしたい。 あるシートにIndirectによる選択肢を沢山設けた表を作成して います。 例えば1つ目のデータは、 A1,A3,A5,A7,A9・・・A21にindirect関数が設定されそれぞれ 選択できるようになっている。(偶数行は見栄えのためのスペ ース。A1,A3,A5,A7,A9・・・A21は全て異なる選択肢。) 2つ目のデータ列は都合上C1,C3,C5,C7,C9・・・C21となって いる。 このデータがA、C、E、G、I、J、K列と約40列並んでいる。 A列で選択したデータを任意の列(例えばE、G、I)に一括でコ ピーしたい。 もちろんコピー元となるA列はCやE列になったりすることもあ ります。 VBAを使って一つ隣の列をコピーするボタンを作ることはでき ましたが、ボタンが約40個もあること、作業性が良くないこ とからユーザーフォームを使って任意の列(列全体ではなくA1,A3,A5,A7,A9 ・・・といった飛び飛びのデータ)を任意の複数の列にコピー させたい。 各列の飛び飛びのデータを変数で返してあげて、指定した列( 表示的には配列番号2~5といった表現)にコピーするにはど のようにVBAを組めばよいでしょうか? 以上、お手数をお掛けしますがご教授の程宜しくお願い致しま す。 p.s 本来ならサンプルをつくって質問すべきですが私用PCにはExcel が入っておらず、会社からは外部へアクセスできない環境なの で言葉のみで説明させていただきました。 理解しにくい部分があれば追記しますので何卒宜しくお願い致 します。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

よくはわからないですが、A列を基準にOffsetプロパティで指定すればいいのかなって思います。 Offsetプロパティ http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_cell.html#offset

tristan104
質問者

お礼

回答ありがとうございます。 別の問題に対し、試行錯誤していたためお礼を申し上げるのが遅くなり恐縮です。 確かにOFFsetを使うことになると思うのですが、そこから先のVBAプログラムを組むところがわからなくて困っています。 質問もわかりにくかったと思います。 何とか、例題を添付できるようにして改めて質問させていただきます。 アドバイスありがとうございました。

関連するQ&A

  • 任意の列データを任意の複数列にコピーする。

    EXCEL VBAについての質問です。 初心者です。宜しくお願い致します。 使用環境はWindows 2000 service pack4 Excel 2000. =質問= 現在、添付のような表を作成しています。(例です。) 赤枠は入力規制→リスト→元の値=Indirect関数を設定し、シート名"データ"内にあるDATA1~6を参照し、選択できるようになっています。 この表において、例えば配列2のデータを配列3,4,5にコピーしたい。(コピー元に配列番号は任意、コピー先に配列も任意。 ) 例題は配列数、データ数も少ないので例えば配列2と配列4でまったく同じデータを選択した場合、列コピーをするか、それぞれ1つ1つ赤枠をクリックしてデータ1~6を選択すればいいのですが、実際の使用では配列が40個あり、データ数も20個以上あります。 また、場合によってコピー元となる配列番号やコピー先の配列番号、数も変化します。 できれば、ユーザーフォームを設定し、配列○のデータを配列△~□にコピーするというメニューを作成し、一気にコピーを行いたい。(○、△、□がドロップダウンで数値が表示させるようにしたい。) ちなみにVBAをつかって1つ隣のデータをコピーするというプログラムが作成できましたが、コマンドボタンを40個用意しなければならず、いかにも泥縄的手法になってしまいます。 Private Sub CommandButton1_Click() Range("B4").Select Selection.ClearContents Range("B6").Select Selection.ClearContents Range("B8").Select Selection.ClearContents Range("B10").Select Selection.ClearContents Range("B12").Select Selection.ClearContents Range("B14").Select End Sub 上記に示す作業を行うためのVBAプログラムの組み方についてユーザーフォームの設定も含めご教授いただくよう宜しくお願い致します。

  • ユーザーフォームでセルを選択

    エクセルのVBAでユーザーフォームに数値を入力してセルを選択することは可能でしょうか? 例えば、列はAに固定していいのですが、ユーザーフォームに「123」と入力してボタンを押せば「A123」のセルがアクティブになるようなユーザーフォームを作成したいのですが方法がわかりません。 よろしくお願いします。

  • ユーザーフォームについて

    エクセル2002です。 ユーザーフォーム内のテキストボックスを使用して、 (1)A1のセルに1と入力されている状態でマクロを起動した場合、 (2)ユーザーフォーム内のテキストボックスには2と表示される (3)ユーザーフォーム内のボタンを押すと、A2のセルに2と入力される。 このような流れで、A列のデータ最終行に番号をふっていきたいです。 (A列のデータ最終行がA30なら、A31に31と番号をふる) ユーザーフォームのテキストボックスとボタンは作ってあるのですが、 それぞれに入れるコードを教えていただけないでしょうか。 よろしくお願いします。

  • エクセルのユーザーフォームをコピーしたい。

    エクセルの2000です。VBAで作ったユーザーフォーム のフォームを他のブックのVBAにコピーをしたいのですが可能でしょうか?可能であれば手順をお教え頂ければ 有りがたいです。

  • エクセルでA列のデーターを30分毎に別の列にコピー

    測定機器のカウンターからRS232C経由でエクセルにA1、B1から順番にA1 B1,A2 B2、A3 B3とその時刻とデーターを書き込んでいくソフトがあります。A列の最後まで行くとそこで終了です。 この1分毎のデーターをリアルタイムでたとえばD列とE列にその時刻とデーターの30分間分をVBAを使ってコピーしたいのです。30分終了したら全部消去してまた新たに30分間分をコピーする。この繰り返しです。目的はこのD列とE列のデーターでリアルタイムのグラフにして観測したいと思っています。こんなことがVBAを使って出来るのでしょうか。また、実はこのデーターは15桁ありその中の9桁目から5桁目までの5桁だけコピーしたいのです。私には敷居が高すぎてとても解決できません。どうかよろしくお願いします。この記録されるエクセルにはVBAとかの記録は特に無いようです。

  • EXCEL VBAでユーザーフォームを使ってデータを入力したい。

    EXCEL VBAでユーザーフォームを使ってデータを入力したいと思っています。(ユーザーフォームはできています。) 入力項目が4項目あります。 名前 作業コード 開始時間 終了時間 上記4項目と登録ボタンです。 sheet1にユーザーフォームを表示し sheet2の A1に名前 B1に作業コード C1に開始時間 D1に終了時間が 登録ボタンを押すごとに どんどんデータを記録していきたいのです。 VBA初心者ですのでコードがよくわかりません。 ご教授ください。よろしくお願いいたします。

  • ユーザーフォームの最小化

    http://www.serpress.co.jp/excel/vba047.html ここを参考にユーザーフォームに最小化のボタンをつけたのですがこの最小化を任意にするにはどうしたらいいでしょうか? 具体的にはユーザーフォームのボタンから他のエクセルを開いた時にとりあえずユーザーフォームを最小化しておきたいのです フォーム自体を小さくすることも考えたのですがまた戻すのが面倒でした。 ですので上記で作成したボタンを実行するには どうしたらいいでしょうか? 是非皆様のお力を貸してください。

  • ユーザーフォームにデフォルトで文字列を入れるには?

    エクセルで使うVBAのユーザーフォームについて質問です。 inputboxでしたら、defaltを使ってあらかじめ文字列を入れられると思うんですけど、 ユーザーフォームでは同じようなことは出来ないのでしょうか?

  • BVAユーザーフォーム上でのオプションボタンについて

    BVAを3時間前から勉強しだした超初心者です。よろしくおねがいします。 エクセルVBAのユーザーフォーム上でオプションボタンをA・B・Cと3つ、コマンドボタンを1つ作成します。 A・B・Cのどれかを選択した状態でコマンドボタンをクリックしたときに、シート1のA列2行目から下に順番にデータとして、Aをクリックしたときにはa、Bをクリックしたときにはb、Cをクリックしたときにはcが入力されるようにコードを作りたいです。 今試行錯誤して作ったものは、オプションボタンをクリックした時点でシート1に入力されてしまうため困っています。

  • VBAでのユーザーフォームの使い方

    VBAのマクロでユーザフォームにボタンを配して、それによってエクセルシートのデータを更新するようなマクロを作りたいのですが、ユーザフォームの挿入でボタン配置まではできるのですけど、どのようにリンク付けするのかコーディング等、解りません。お教え下さい。簡単なサンプルコーディングがあれば助かります。