• ベストアンサー

VBA 選択された離れたセルの値の取得について

EXCELのVBAでどうしても前に進めず困っております。 目的としているコードは、離れたセル(複数)をあらかじめCtrlキーで選択状態にしておき、選択されたセルの値のみをVBAが別のセルに並べていくというものです。 以下が私の作ったコードなのですが、思ったとおりの動作をしてくれません。 VBA初心者なもので、おかしな記述がたくさんあると思うのですが、どなたかアドバイスお願いします。 Public Sub xx() Dim SelectArea As String Dim TargetCell As Range Dim a As Integer Dim Row As Integer Dim Column As Integer Dim CNT1 As Integer a = 0 Row = 0 Column = 0 For CNT1 = 1 To 10 Row = Row + 1 SelectArea = Selection.Address Set TargetCell = Range("B3").Cells(Row - 1, Column) If Intersect(Range(SelectArea), TargetCell) Is Nothing Then Else Range("A30").Cells(a, 0) = Range("B3").Cells(Row - 1, Column).Value a = a + 1 End If Next End Sub

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

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

例えばB列を任意に選択してA1から下に順に並べるなら、 Sub try() Dim r As Range Dim rr As Range Set rr = Range("A1") For Each r In Selection rr.Value = r.Value Set rr = rr.Offset(1) Next Set rr = Nothing End Sub こんな感じでも出来ますけど。

torifan10
質問者

お礼

ご回答ありがとうございます。 目的通りの動作を得ることが出来ました。 意外だったのは、セルを選択した順番に値が取得されたということです。 選択状態であれば、行または列から順番に値が取得されていくのだと思っていましたが、そうではないのですね。 並び替えをすることで解決できそうですので、教えていただいたコードで組み立ててみたいと思います。

その他の回答 (1)

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

最初のうちは、変数を日本語で設定すると コードが読みやすいと思います コードは#1さんとかぶってます ’------------------------------------------------------------ Sub てすと() Dim 選択されたセル全部 As Range Dim 選択されたセルの中の一つ As Range Dim 書き出しセル As Range Dim 行 As Integer Set 選択されたセル全部 = Selection Set 書き出しセル = Range("a1") 行 = 0 For Each 選択されたセルの中の一つ In 選択されたセル全部 書き出しセル.Offset(行, 0).Value = 選択されたセルの中の一つ.Value 行 = 行 + 1 Next Set 選択されたセル全部 = Nothing Set 書き出しセル = Nothing End Sub ’------------------------------------------------------------- がんばって

関連するQ&A