2012-10-23 147 views
-1

我正在將一個範圍複製到不同工作簿的下一個空單元格中。下面的代碼;行中的第一個空單元格

Public Sub InvoicedInstallments() 

Dim rng1 As Range 
Dim rng2 As Range 
Dim rng3 As Range 
Dim fname As String 
Dim mt As String, yr As String 
mt = MonthBox.Value 
yr = YearBox.Value 
fname = yr & mt & "DB" & ".xlsx" 
Set rng1 = Workbooks("201209TB.xlsx").Worksheets("excel").Range("E348") 
Set rng2 = Workbooks("201209TB.xlsx").Worksheets("excel").Range("E295") 
Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Cells(1, Columns.Count).End(xlToRight).Select 

rng3.Value = (rng1.Value + rng2.Value) 
rng3.Value = rng3.Value * -1 
rng3.Value = Round(rng3.Value/1000, 0) 

End Sub 

發生了線

Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Cells(1, Columns.Count).End(xlToRight).Select 

改爲

Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Range("AA49").End(xlToRight).Offset(0, 1) 

它將會把數據放到一個空單元格(這是我想要的東西),但它不那麼如果您再次運行代碼,請將信息放入下一個空單元格中。

我想這僅僅是簡單的東西,但我看不出它

它複製到我懷疑合併單元格持有大量的問題 (見下面的註釋爲證實這一點)

+0

範圍是201209TB中單元格E348 + E295的總和,它將進入第49行的下一個空白單元格 – JamesDev

+0

範圍(「AA49」) - >這就是爲什麼, t總是在相同的位置 – Jook

+0

那麼,我會如何改變這是行中的下一個空白單元格? – JamesDev

回答

0

我猜,您的問題將在這一行:

rng3.Value = Round(rng3.Value/1000, 0) 

但錯誤在這裏拋出

Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Cells(1, Columns.Count).End(xlToRight).Select 

這是因爲select

Select,選擇,它不返回給你一個範圍對象。

用這個代替

Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Cells(1, Columns.Count).End(xlToRight) 

但是,我不知道,如果這是你想要的東西,因爲你可能只是說

Set rng3 = Workbooks(fname).Worksheets("UK monthly dashboard").Range("IV1") 

,因爲這是你得到的 - 至少,如果您僅使用.xlsx

+0

這已停止了該錯誤,但數據未出現在工作表上 – JamesDev

+0

我可能通信不暢,我所擁有的是2012年每個月的一行數據,當代碼運行時,我希望它查找下一個空白單元格(這將是下個月)並將數據放在那裏。如果這個單元格每個月都是一樣的,但它會不斷變化 – JamesDev

+0

@JamesDev - 請參閱我的編輯,使用調試器 - 我有一種強烈的感覺,你現在不知道你究竟是在推倒/使用什麼。說出你想達到的目標,否則很難猜出你的目標;) – Jook

相關問題