Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6244 / 13644 ツリー ←次へ | 前へ→

【46339】変数を使ってのセル位置の指定 okitsun 07/1/31(水) 13:32 質問[未読]
【46340】Re:変数を使ってのセル位置の指定 okitsun 07/1/31(水) 13:33 回答[未読]
【46345】Re:変数を使ってのセル位置の指定 okitsun 07/1/31(水) 16:46 質問[未読]
【46351】Re:変数を使ってのセル位置の指定 ハチ 07/1/31(水) 17:10 回答[未読]
【46410】Re:変数を使ってのセル位置の指定 okitsun 07/2/2(金) 9:58 お礼[未読]

【46339】変数を使ってのセル位置の指定
質問  okitsun E-MAIL  - 07/1/31(水) 13:32 -

引用なし
パスワード
   間違って削除してしまいました。すいません。

   A   B   C   D
1
2  あ  い   う  
3  か  き   く
4
5

上の表で、
変数がx=1、y=2となっていた場合、A2:C3の範囲
を変数を使って指定するにはどうしたらいいでしょうか?
イメージはA2:(A+x)(2+y)なのですが。

下のマクロはうまくいきませんでした。

Sub Macro2()

  Dim x As Integer
  Dim y As Integer
  
  x = 2
  y = 3
  Range("A4:(A+x)(4+y)").Select
  Selection.Copy
  Sheets("sheet1").Select
  Range("A2").Select
  ActiveSheet.Paste

End Sub

【46340】Re:変数を使ってのセル位置の指定
回答  okitsun E-MAIL  - 07/1/31(水) 13:33 -

引用なし
パスワード
   これは、
Range("A4").Resize(x + 1, y + 1).Select
とすることで解決しました。

【46345】Re:変数を使ってのセル位置の指定
質問  okitsun E-MAIL  - 07/1/31(水) 16:46 -

引用なし
パスワード
   配列にセル位置を格納しているのですが、
その戻り値をRangeの引数にすることはできますか?
下の例だとmyarray(i)にセル位置が入っていて、
kaisiichiをRangeの引数にしたいのですが。


  For i = 1 To 4

→  kaisiichi = myarray(i)
→  Range(kaisiichi).Resize(1, 5).Select

   Selection.Copy
   Sheets("sheet1").Select
   Range("A2").Select
   ActiveSheet.Paste
  Next

【46351】Re:変数を使ってのセル位置の指定
回答  ハチ  - 07/1/31(水) 17:10 -

引用なし
パスワード
   ▼okitsun さん:
>配列にセル位置を格納しているのですが、
>その戻り値をRangeの引数にすることはできますか?
>下の例だとmyarray(i)にセル位置が入っていて、
>kaisiichiをRangeの引数にしたいのですが。
>
>
>  For i = 1 To 4
>
>→  kaisiichi = myarray(i)
>→  Range(kaisiichi).Resize(1, 5).Select
>
>   Selection.Copy
>   Sheets("sheet1").Select
>   Range("A2").Select
>   ActiveSheet.Paste
>  Next

セルのアドレスが入っているなら出来ます。
ですが、他の質問も拝見していると
アドレスが入っているようには見えませんけど。

Sub Test1()
  Dim myAry As Variant
  Dim v As Variant
  
  myAry = Array("A1", "B2", "C1")
  For Each v In myAry
    Range(v).Select
    MsgBox Selection.Address
  Next v

End Sub

やりたいことが良くわかりませんが、
Collectionにしてしまうという手もあります。

Sub Test2()
  Dim myCol As Collection
  Dim v As Variant
  Dim i As Integer
  
  Set myCol = New Collection
  With myCol
    .Add Range("A1")
    .Add Range("B2")
    .Add Range("C3")
  End With
  
  For i = 1 To myCol.Count
    myCol(i).Select
    MsgBox Selection.Address
  Next i
  
  For Each v In myCol
    v.Select
    MsgBox Selection.Address
  Next v
  
  Set myCol = Nothing
End Sub

【46410】Re:変数を使ってのセル位置の指定
お礼  okitsun E-MAIL  - 07/2/2(金) 9:58 -

引用なし
パスワード
   ▼ハチ さん:

お礼がおそくなってしまいすいませんでした。
myarrayにセル位置を格納しています。
vでセル位置を取り出し、それをRange(v)を使って
(Range(v).Offset(p, 0).Resize(1, 6).Select)
取り出しています。ありがとうございました。

   r = 2
   For p = 2 To AcolumnC - 1
  
   For Each v In myarray
   Sheets("sheet1").Select
   Range(v).Offset(p, 0).Resize(1, 6).Select
   Selection.Copy
   Sheets("sheet2").Select
   Range("A" & r).Select
   r = r + 1
   ActiveSheet.Paste
   Next
  
   Next

6244 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free