電子書籍の厳選無料作品が豊富!

お世話になります。
エクセルシートの最終行に、新しい行が追加されるように、ネットで調べた下記の様な構文を使ってみたのですが、行は追加されるのですが、更に追加すると新しい情報に書き換わってしまいます。
最初に追加した行に、2番目に追加した行の情報が上書きされてしまいます。
更に、3番目に追加した情報が、最初と2番目に上書きされてしまいます。
と言った感じで続きます。
これを何とかしたいのですが、よろしくお願いします。

Private Sub CB4_Click()

Dim n As Variant

Workbooks.Open Filename:="\\Server\共有\02_営業部\営業ツール\新規問い合わせ\新規問い合わせ.xls"
Sheets("新規問い合わせ").Select

’日時
n = Cells(Rows.Count, "A").End(xlUp).Row + 1
Range("A" & n).Select
ActiveCell.FormulaR1C1 = "='[test _6.xlsm]新規問合せ'!R4C1"

'問合せ元
n = Cells(Rows.Count, "C").End(xlUp).Row + 1
Range("C" & n).Select
ActiveCell.FormulaR1C1 = "='[test _6.xlsm]新規問合せ'!R5C2"

A 回答 (2件)

№1で回答した者ですが、お礼を受けて再回答します。



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

というのを

R = .Range("a1", .UsedRange).Rows.Count + 1

にしてみるとか

.Range("A" & R).FormulaR1C1 = "='[test _6.xlsm]新規問合せ'!R4C1"

というのを

.Range("A" & R).Formula = "='[test _6.xlsm]新規問合せ'!a4"

にしてみてもダメでしょうか?


正直言うと、おっしゃる現象がイマイチよくわかりません。
文章から想像できるような現象は理屈上起こりえないので、どこかに誤解があるような気がします。

マクロを動かす前と後の状態を画像で張って捕捉してもらえませんか?
    • good
    • 0

nを求める際のCellsやRowsがどのシートのCellsやRowsなのかを明記したほうがいいです。

Rangeも同じ。

Private Sub CB4_Click()

Dim R as Long

With Workbooks.Open(Filename:="\\Server\共有\02_営業部\営業ツール\新規問い合わせ\新規問い合わせ.xls")

With .Worksheets("新規問い合わせ")

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

.Range("A" & R).FormulaR1C1 = "='[test _6.xlsm]新規問合せ'!R4C1"
.Range("C" & R).FormulaR1C1 = "='[test _6.xlsm]新規問合せ'!R5C2"

End with

End With

R = 0

End Sub


あと余計なお世話ですがVariant形式はメモリを無駄に食うので、Variantにする必要が無いのならIntegerかLongにした方がいいです。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございます。
やってみたのですが、行追加はされますが、どうしても先に追加した行の情報が、後から追加した行の情報に上書きされてしまいます。

お礼日時:2017/06/01 12:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!