- ベストアンサー
ExcelVBAで列のセルを指定する方法
- ExcelVBAを使用して、選択された列のセルを指定する方法について質問します。
- 具体的には、シート1のA列を選択した状態で、列の先頭の値をシート2に移す方法を知りたいです。
- 現在のコードでは、Application.GotoとSelectionを使用して実現していますが、一行でスッキリと書く方法はありませんか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
はて? シート1のA列の指定行の値を、シート2のA1に記入する: worksheets("Sheet2").range("A1").value = worksheets("Sheet1").cells(1, "A").value #なぜわざわざ「columns(1)」から開始したいと考えたのでしょうね??
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! >目的としてはシート1のA列を選択した状態で、 >列の先頭(A1)の値をシート2に移す事 とありますので、単純に Sub Sample1() Selection(1).Copy Worksheets("Sheet2").Cells(1, 1) End Sub または Sub Sample2() Worksheets("Sheet2").Range("A1") = Selection(1) End Sub ではダメでしょうか?m(_ _)m
お礼
早速ご回答頂きまして有り難う御座います。 私の書き方が悪かったです、大変申し訳ありません。 訂正させて頂きます。 >目的としてはシート1のA列を選択した状態で、 >列の先頭(A1)の値をシート2に移す事 目的としてはシート1のA列を"対象"に 列の先頭(A1)の値をシート2に移す事 とさせて頂きます。 A列を選択した場合、教えていただいたコードで目的はバッチリ達成されます。 しかし、今回はA列を範囲選択するという動作を省きたいと 思っておりまして、そうするとSelectionが使えなのです。 ちなみに質問文にも記載しましたが、 Worksheets("sheet1").Columns(1).Selection(1).Value と、シート1のA列を指定後、続けてSelection(1)と指定して 見ましたがやはり実際に選択していないのでダメでした。 やっぱり一度A列を選択した後、Seledtionなりで改めて 指定しないとダメなんでしょうかね・・・
お礼
ご回答有り難う御座います。 記載の内容にて目的の通りの処理が出来ました。 流石です、有り難う御座います。 cellsプロパティのこうした使い方は普段使用しておらず、 またCellsプロパティは(縦,横)で指定するという固定概念 が発想を妨げていました。 Columns(1)を対象にして位置を指定する事を目的としたのは、 エクセルをデータテーブルの状態で使用しているデータに、 本来1品目1行である筈のレコードが1品目で3行など 複数行使用されているファイルを扱うことが多くある為です。 例えばフィールドタイトルが1行目として、2~4行目が 1製品目のデータ、5~7行目が2製品目のデータといった 具合です。 その時、IFとループ処理である製品を検索したとして、 特定したレコードの1行目のデータを取得する事もあれば、 2行目のデータを取得する事もあります。しかしとにかく 指定が面倒で何とかしたいと考えておりました。 検索する時、該当アドレスを確認する事をループ処理に 組み込めば、お教え頂いた方法を使用できます。そうする事で より簡潔に取得したいデータの位置を指定することが出来、 更に動作の速いコードが書けると思われます。 本来、1品目のレコードに複数行を使うこと自体を修正するべき なのでしょうが、そのデータを作成している方の都合もあり、 やむおえずの状況なのです。そこはお察し下さいw 以上が理由です。 せっかくご回答頂きましたのでキチンと説明したいと思ったの ですが、逆にごちゃごちゃしてて分り難いですね、ごめんなさい しかしながらこれにて問題は解決出来そうです。 どうも有り難う御座いました。 また質問することがありましたら宜しくお願い致します。