Excel VBA質問箱 IV

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

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


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

【64950】転記について isausa 10/3/29(月) 13:16 質問[未読]
【64955】Re:転記について ponpon 10/3/29(月) 21:27 発言[未読]
【65057】Re:転記について isausa 10/4/8(木) 16:16 お礼[未読]

【64950】転記について
質問  isausa  - 10/3/29(月) 13:16 -

引用なし
パスワード
   VBA初心者ですが、是非マスターしたいVBAがあります。
sheet1のa1:B5に1月分のデータ、C1:D5に2月分データ、E1:F5に3月分データ・・・・12月までデータが一覧で入っていたとします。sheet2でA1に1と入れるとSheet1のA1:B5のデータがSHEET2のA2:B6に転記できるように、2と入れると先のSheet2データ範囲がクリアされて2月分のデータC1:D5が転記されるようにしたいのですが、できますか。

【64955】Re:転記について
発言  ponpon  - 10/3/29(月) 21:27 -

引用なし
パスワード
   ▼isausa さん:
>VBA初心者ですが、是非マスターしたいVBAがあります。
>sheet1のa1:B5に1月分のデータ、C1:D5に2月分データ、E1:F5に3月分データ・・・・12月までデータが一覧で入っていたとします。sheet2でA1に1と入れるとSheet1のA1:B5のデータがSHEET2のA2:B6に転記できるように、2と入れると先のSheet2データ範囲がクリアされて2月分のデータC1:D5が転記されるようにしたいのですが、できますか。

"Sheet2"のシートモジュールに
こんな感じでできると思いますが・・

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Long
  
  With Target
    If .Count <> 1 Then Exit Sub
    If Not IsNumeric(.Value) Then Exit Sub
    If .Address(0, 0) <> "A1" Then Exit Sub
    If Not IsEmpty(.Value) Then
      Application.EnableEvents = False
       i = .Value
          With Sheets("Sheet1")
            .Range(.Cells(1, i * 2 - 1), .Cells(5, i * 2)).Copy Sheets("Sheet2").Range("A2")
          End With
      Application.EnableEvents = True
    End If
  End With
   
End Sub

【65057】Re:転記について
お礼  isausa  - 10/4/8(木) 16:16 -

引用なし
パスワード
   ▼ponpon さん:
>▼isausa さん:
>>VBA初心者ですが、是非マスターしたいVBAがあります。
>>sheet1のa1:B5に1月分のデータ、C1:D5に2月分データ、E1:F5に3月分データ・・・・12月までデータが一覧で入っていたとします。sheet2でA1に1と入れるとSheet1のA1:B5のデータがSHEET2のA2:B6に転記できるように、2と入れると先のSheet2データ範囲がクリアされて2月分のデータC1:D5が転記されるようにしたいのですが、できますか。
>
>"Sheet2"のシートモジュールに
>こんな感じでできると思いますが・・
>
>Option Explicit
>
>Private Sub Worksheet_Change(ByVal Target As Range)
>  Dim i As Long
>  
>  With Target
>    If .Count <> 1 Then Exit Sub
>    If Not IsNumeric(.Value) Then Exit Sub
>    If .Address(0, 0) <> "A1" Then Exit Sub
>    If Not IsEmpty(.Value) Then
>      Application.EnableEvents = False
>       i = .Value
>          With Sheets("Sheet1")
>            .Range(.Cells(1, i * 2 - 1), .Cells(5, i * 2)).Copy Sheets("Sheet2").Range("A2")
>          End With
>      Application.EnableEvents = True
>    End If
>  End With
>   
>End Sub

有り難うございました。そのまんま書き写しでうまくいきました。応用がうまくいくかどうかわかりませんががんばってやってみます。

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