2014-05-24 49 views
-1

我正在嘗試記錄我有的窗體處理的所有信息。每個星期表格都會更新,我想保留其中包含的數據的日誌。下面我編寫了從表單傳輸到數據日誌的數據,但它被設置爲特定的行。使VBA腳本查找下一個空行?

Sub DataLog() 
' 
' DataLog Macro 
' Record sales in the data log. 
' 

' 
    Sheets("Cell History").Select 
    Range("A7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[-6]C[3]" 
    Range("C7").Select 
    ActiveCell.FormulaR1C1 = "=Form!RC[2]" 
    Range("D7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[1]C[1]" 
    Range("E7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[2]C" 
    Range("F7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[3]C[-1]" 
    Range("G7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[4]C[-2]" 
    Range("H7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[5]C[-3]" 
    Range("I7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[6]C[-4]" 
    Range("J7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[7]C[-5]" 
    Range("K7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[8]C[-6]" 
    Range("L7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[9]C[-7]" 
    Range("N7").Select 
    ActiveCell.FormulaR1C1 = "=Form!RC[-3]" 
    Range("O7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[1]C[-4]" 
    Range("P7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[2]C[-5]" 
    Range("Q7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[3]C[-6]" 
    Range("R7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[4]C[-7]" 
    Range("S7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[5]C[-8]" 
    Range("T7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[6]C[-9]" 
    Range("U7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[7]C[-10]" 
    Range("V7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[8]C[-11]" 
    Range("X7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]" 
    Range("Y7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]" 
    Range("Z7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]" 
    Range("AA7").Select 
    ActiveCell.FormulaR1C1 = "=Form!R[13]C[-22]" 
End Sub 

因爲我將每週更新它,我不知道我怎樣才能使Excel中尋找下一個空行,從第7行我目前使用的Excel 2013年所有幫助開始是極大的讚賞,感謝:)

UPDATE:

我用安迪G公司的代碼將其更改爲:

Dim rng As Range 
Set rng = Range("A100000").End(xlUp).Offset(1,0) 

rng.Value = "orginal cell location" 

我去除第二 「.Offset(0,1)」,因爲它移動的小區的第二時間r飛行。

謝謝大家:)

+1

[Add last rows below last row](http://stackoverflow.com/questions/22045353/add-rows-below-last-row) – RubberDuck

+1

另請參閱[避免選擇和激活](http:// stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select) – RubberDuck

+0

這裏有許多答案顯示如何在工作表中查找上次使用的行。問題是您正在將工作表「單元格歷史記錄」設置爲公式。我假設表格中的數據每週都在同一個地方,因此您在「細胞歷史記錄」中獲得的所有數據都是本週數據的多個副本。我懷疑你想要移動價值。再次,任何數量的答案,告訴你如何做到這一點。 –

回答

2

可以一路下滑的列開始,並拿出來定位在一個值的最後一個單元格,然後去一個進一步下跌的下一個空單元格:

Range("A100000").End(xlUp).Offset(1,0).Select 

100000是一個任意數字,如果您願意,可以使用Cells.Rows.Count

但是,而不是選擇單元格,你應該保存它的一個引用,並使用Offset插入同一行中的所有值:

Dim rng As Range 
Set rng = Range("A100000").End(xlUp).Offset(1,0) 

rng.Offset(0,1).Value = "whatever" 

選擇細胞是非常低效的。

+0

感謝您的幫助。我嘗試在腳本中實現這一點,但我不確定是否按照您描述的方式進行了操作,每次單擊帶有指定宏的按鈕時,偏移組件都會導致它從下面的單元格獲取數據,而不是放置它在下面的框中 – Jacob

+0

我已經更新了我的問題中的代碼,以顯示我現在擁有的,再次感謝。 – Jacob

+0

你不應該這樣做。你現在已經徹底改變了原來的問題,並且會混淆未來閱讀此內容的任何人。如果可以,請將其放回原處並在其下方添加新信息,或者最好開始一個新話題。 –