2016-12-10 3 views
3

を意図したとおりに動作していない私は、ボタンのアクションを処理するためにthisチュートリアルxlDownは

を追ってきました。ボタンをクリックするたびに新しい行にデータを書きたいが、既存のデータを上書きするか、新しい行にデータを書き込んだり(上書きする)

コード:

Private Sub cmdUnesiUBazu_click() 
    Sheet1.Activate 

    Range("B2").End(xlDown).Offset(1, 0).Select ' want to start write from C2 cell 
    ActiveCell.Value = ActiveCell.Offset(-1, 0).Value + 1 

    ActiveCell.Offset(0, 1).Value = txtSifraOsobe.Value 
    ActiveCell.Offset(0, 2).Value = txtImeIPrezime.Value 
    ActiveCell.Offset(0, 3).Value = txtAdresa.Value 
    ActiveCell.Offset(0, 4).Value = cboGrad.Value 
    ActiveCell.Offset(0, 5).Value = cboDrzava.Value 
    ActiveCell.Offset(0, 7).Value = txtDatumRodjenja.Value 

    End Sub 
+0

私はこれを複製することはできません - そのコードではなく、実際の参照を使用しますが、私のために正常に動作します 'ActiveCell' d'Offset'ははるかに良いでしょう。 – Comintern

+0

'ActiveCell.Value = ActiveCell.Offset(1、0).Value + 1'という行は理解できません。 'Range(" B2 ")。End(xlDown)'を使用しているので、これはおそらく列の最後のセルです。次の空の行からデータを取り出す理由空でないと確信していない限り、 – nightcrawler23

+3

列Bの最後の行を取得する場合は、おそらくRange( "B"&Rows.Count).End(xlUp).Offset(1,0).Select'を使用する必要があります。 – nightcrawler23

答えて

2

ではなく、それらを選択し、ActiveCellを参照するので、直接セルを参照することをお勧めします。時計

あなたのレコードを参照する一意のID(ID)を作成しようとしているようです。代わりにあなたがActiveCell.Value = ActiveCell.Offset(上のセルの値に1を加算しなければならないActiveCell.Value = ActiveCell.Offset(, 0).Value + 1 -1, 0).Value + 1

Sheet1.Activate 

With Range("B2").End(xlDown).Offset(1, 0) 
    .Value = .Offset(-1, 0).Value + 1 
    .Offset(0, 1).Value = txtSifraOsobe.Value 
    .Offset(0, 2).Value = txtImeIPrezime.Value 
    .Offset(0, 3).Value = txtAdresa.Value 
    .Offset(0, 4).Value = cboGrad.Value 
    .Offset(0, 5).Value = cboDrzava.Value 
    .Offset(0, 7).Value = txtDatumRodjenja.Value 
End With 
+0

実際、私のプロジェクトではOffset(-1、0).Value + 1を立てていますが、ここにコードをコピーすると何かが間違っています。しかし、それはまだ変わった動作をしており、満たされていないデータがある場合は、最初の行に書き込みを行い、それを上書きし続けます。 – MGKP

+0

@MGKPIあなたがデータのスクリーンショットを投稿したら、なぜそれが何をしているのかを説明します。 –

1

を避けるために非常に整然とだろう場合:しかし、あなたは下の空のセルに1を加えていますセルOffsetsによってActivateとセル、おそらくすなわち:

Dim ws As Worksheet 
Dim rng1 As Range 

Set ws = Sheets(1) 
Set rng1 = ws.Cells(Rows.Count, "B").End(xlUp) 
rng1.Offset(1, 1).Resize(1, 7) = Array(Me.txtSifraOsobe, Me.txtImeIPrezime, Me.txtAdresa, Me.cboGrad, Me.cboDrzava, , Me.txtDatumRodjenja) 
関連する問題