• ベストアンサー

VBAでデータ処理

現在データ入力をしています。 例えば、A列には名前を入力しB列~F列まではその物に関する情報を入力したいと思います。 しかし、横長になりすぎるので、普段はデータ部分のB列~F列のセルを隠しておき、 A列のセル(例えばA3)をクリックすると、B3のデータがG1に、C3のデータがG2に、D3のデータがG3に、 E3のデータがG4に、F3のデータがG4に表示するようにしたいと思っています。 どのような方法があるでしょうか。ご教授下さい。

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

  • ベストアンサー
回答No.2

その処理しようとしているワークシートに限って言えば、以下の処理でいけると思います。 (Worksheet_SelectionChangeイベントを使ってみました) あと、全角空白使ってます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range)   Dim i%   ' A列選択時(選択したカラムのR1C1形式での値が1の場合)   If Target.Cells.Column = 1 Then     ' 選択セルが空じゃない場合(こういうのがいらなかったらここのIFは省く)     If Cells(Target.Cells.Row, Target.Cells.Column).Value <> "" Then       ' 仰っている処理を行う       For i% = 1 To 5         Cells(i%, Target.Cells.Column + 6).Value = Cells(Target.Cells.Row, Target.Cells.Column + i%).Value       Next     End If   End If End Sub 本当のシートがどういう風になっているのか(G列が固定かどうかとか・・)はわかりませんが。。 頑張ってください^^

tack_tack
質問者

お礼

回答ありがとうございます。 理想的な内容に仕上がりました。 これで楽々データ処理ができると思います。

その他の回答 (1)

  • rheda
  • ベストアンサー率30% (3/10)
回答No.1

”A列をクリックすると”は、難しいと思いますが、 コマンドボタンでも1つ置いておいて、 A列のセルを選択した状態で、ボタンを押せば、 G列の頭から、選択(選択した行の)内容を表示 させることはVBAなら難しくないと思います。 range("g1")=activecell.offset(0,1) range("g2")=activecell.offset(0,2) といった感じです。 B~Fは、列の移動で隠しています。

tack_tack
質問者

お礼

ご返答ありがとうございました。 コマンドボタンを使うという方法は、 上記の方法と組み合わせて、データ抽出の際に利用させていただきます。 ありがとうございました。