ここから本文です

質問よろしくお願いします。 下記VBAより、別シートへ転記する際、転記記録さ...

chi********さん

2019/1/1623:56:10

質問よろしくお願いします。
下記VBAより、別シートへ転記する際、転記記録されたデータが溜まって行かずに上書きされてしまいます。

最終行に転記されるようにしたいのですが、どの式が良くないのか教えてください!

Sub ?f?[?^?]?L_Click()

Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim myRow As Long
Set Sh1 = Worksheets("????V?[?g")
Set Sh2 = Worksheets("?L?^?V?[?g")
With Sh2
myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range(.Range("A" & myRow), .Range("I" & myRow)).Value = Sh1.Range("A2:I2").Value

End With
With Sh1
.Range("A2:I2").ClearContents
End With


End Sub

閲覧数:
24
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2019/1/1700:49:05

実行しました。
>転記記録されたデータが溜まって行かずに上書きされてしまいます。
という症状は再現できませんでした。
使用したコードは、文字化けを訂正した↓のもの。

Sub 文字化けしてました_Click()
Dim Sh1 As Worksheet
Dim Sh2 As Worksheet
Dim myRow As Long
Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
With Sh2
myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range(.Range("A" & myRow), .Range("I" & myRow)).Value = Sh1.Range("A2:I2").Value
End With
With Sh1
.Range("A2:I2").ClearContents
End With
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

hot********さん

2019/1/1705:47:39

一見すると正しいのですが、上書きされるとしたら、最終行の算出をA列で行っているので、A2にデータが無い場合、次回に上書きしてしまいます。

>With Sh2

の前に、A2をチェックする下記を加えてみてください。

If Sh1.Range("A2").Value = "" Then
Sh1.Select
Sh1.Range("A2").Select
MsgBox Sh1.Name & "のA2は必須です"
Exit Sub
End If





または、最終行の算出方法を変えて、

>myRow = .Range("A" & Rows.Count).End(xlUp).Row + 1

を下記に変えてみて下さい。

myRow = .Range("A:I").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row + 1

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる