Excel VBA質問箱 IV

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

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


6034 / 13645 ツリー ←次へ | 前へ→

【47548】他のシートへのデータの蓄積 VBA なんて大嫌いだ 07/3/14(水) 14:38 質問[未読]
【47554】Re:他のシートへのデータの蓄積 ウッシ 07/3/14(水) 17:07 発言[未読]
【47567】Re:他のシートへのデータの蓄積 VBA なんて大嫌いだ 07/3/15(木) 9:08 お礼[未読]

【47548】他のシートへのデータの蓄積
質問  VBA なんて大嫌いだ  - 07/3/14(水) 14:38 -

引用なし
パスワード
   初めて投稿させていただきます。
過去ログ等を探してみたのですが、よい解決方法が見つけられなかったので、
質問をさせていただきます。

日々の入力データを蓄積データ用シートに移行させるマクロを組んでみたのですが、データの先頭行のいずれかに空白のセルがあった場合うまく動かなくて困っています。

Rowでの指定に問題があるとは思うのですが、どうすれば解決できるかがわかりません。なにとぞご教授の程お願いします。

下記にマクロの概要を記載しておきます。

Sub データ蓄積()

  Dim myRow8 As Long, myRow9 As Long
  
    myRow8 = Sheets("Sheet1").Range("H65536").End(xlUp).Row
    myRow9 = Sheets("Sheet5").Range("B65536").End(xlUp).Row
  
  Dim LastRow1 As Long
    LastRow1 = Worksheets("Sheet5").Range("B" & Rows.Count).End(xlUp).Row + 1
  
  If MsgBox("データの蓄積を開始します。", vbExclamation + vbOKCancel) = vbOK Then
  
    If myRow8 = 3 Then
  
      Worksheets("Sheet5").Range("B" & LastRow1).Value = Worksheets("Sheet1").Range("H3").Value
      Worksheets("Sheet5").Range("C" & LastRow1).Value = Worksheets("Sheet1").Range("I3").Value
      Worksheets("Sheet5").Range("D" & LastRow1).Value = Worksheets("Sheet1").Range("J3").Value
      Worksheets("Sheet5").Range("E" & LastRow1).Value = Worksheets("Sheet1").Range("K3").Value
      Worksheets("Sheet5").Range("F" & LastRow1).Value = Worksheets("Sheet1").Range("L3").Value
      Worksheets("Sheet5").Range("G" & LastRow1).Value = Worksheets("Sheet1").Range("M3").Value
      Worksheets("Sheet5").Range("H" & LastRow1).Value = Worksheets("Sheet1").Range("N3").Value
      Worksheets("Sheet5").Range("I" & LastRow1).Value = Worksheets("Sheet1").Range("O3").Value
      Worksheets("Sheet5").Range("J" & LastRow1).Value = Worksheets("Sheet1").Range("P3").Value
      Worksheets("Sheet5").Range("K" & LastRow1).Value = Worksheets("Sheet1").Range("Q3").Value
  
    End If
  
    If myRow8 > 3 Then
        
      Sheets("Sheet1").Range("H3:Q" & myRow8).AdvancedFilter Action:=xlFilterCopy, _
      CopyToRange:=Sheets("Sheet5").Range("B" & myRow9 + 1), Unique:=False
    
    End If
  
  End If
  
End Sub

【47554】Re:他のシートへのデータの蓄積
発言  ウッシ  - 07/3/14(水) 17:07 -

引用なし
パスワード
   こんにちは

フィルタオプションでただコピーしているだけみたいなので、

Sub データ蓄積()
  Dim myRow8  As Long, myRow9 As Long
  Dim LastRow1 As Long
  
  myRow8 = Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Row
  myRow9 = Worksheets("Sheet5").Range("B" & Rows.Count).End(xlUp).Row
 
  LastRow1 = myRow9 + 1
 
  If MsgBox("データの蓄積を開始します。", vbExclamation + vbOKCancel) = vbOK Then
 
    If myRow8 >= 3 Then
     
      With Worksheets("Sheet1").Range("H3:Q" & myRow8)
        Worksheets("Sheet5").Range("B" & LastRow1).Resize(.Rows.Count, 10).Value _
        = .Value
      End With
      
    End If
 
  End If
 
End Sub

これだけかも?

【47567】Re:他のシートへのデータの蓄積
お礼  VBA なんて大嫌いだ  - 07/3/15(木) 9:08 -

引用なし
パスワード
   ウッシさん、回答ありがとうございます。

ご回答頂いたプログラムで問題なく動きました。
何故この構文でいけるのかテキスト片手に考えて見ているのですが
まだまだ理解できません。
せめて仕組みぐらいは頑張って理解してみます。

ご教授ありがとうございました。


▼ウッシ さん:
>こんにちは
>
>フィルタオプションでただコピーしているだけみたいなので、
>
>Sub データ蓄積()
>  Dim myRow8  As Long, myRow9 As Long
>  Dim LastRow1 As Long
>  
>  myRow8 = Worksheets("Sheet1").Range("H" & Rows.Count).End(xlUp).Row
>  myRow9 = Worksheets("Sheet5").Range("B" & Rows.Count).End(xlUp).Row
> 
>  LastRow1 = myRow9 + 1
> 
>  If MsgBox("データの蓄積を開始します。", vbExclamation + vbOKCancel) = vbOK Then
> 
>    If myRow8 >= 3 Then
>     
>      With Worksheets("Sheet1").Range("H3:Q" & myRow8)
>        Worksheets("Sheet5").Range("B" & LastRow1).Resize(.Rows.Count, 10).Value _
>        = .Value
>      End With
>      
>    End If
> 
>  End If
> 
>End Sub
>
>これだけかも?

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