返回列表 上一主題 發帖

[發問] 將資料自動複製到,目前點選的所在頁面並自動選擇最後一行空白處貼上

想借提問固定檔案檔名的分頁資料複製問題
想從資料表"當月報表"中建立巨集,作用如 下
複製"當月報表"中的[綜合資料庫]的A5:AQ有值的最後一行

"全年度資料庫"資料表的[綜合資料庫]中的A列有值的下一行(空白處)

想詢問前輩們,以上巨集要如何編寫比較正確
如果沒有打開檔案"全年度資料庫",請問會自動打開嗎?

TOP

回復 24# luhpro

感謝luhpro大大的回覆

巨集卡在
  1. lSRow = .Cells(Rows.Count, [AQ1].Column).End(xlUp).Row ' 找末列
複製代碼
打開的全年度資料庫無誤
請問該如何排解?

TOP

本帖最後由 jackson7015 於 2015-5-12 16:17 編輯

回復 26# GBKEE

感謝GBKEE板大
原狀況排除了

但是又出了新狀況...
我的因為A4:AQ4都有值,所以我把[CTRL+↓]的指令改成從AQ4開始(End(xlUp)的意思應該是這樣沒錯吧?)
但是還出現問題
  1.     lTRow = wsTar.Cells(Rows.Count, 1).End(xlUp).Row
  2.     .Range([A5], .Cells(lSRow, [AQ4].Column)).Copy wsTar.Cells(lTRow, 1)
複製代碼
下面的列式有錯誤
  1.     .Range([A5], .Cells(lSRow, [AQ4].Column)).Copy wsTar.Cells(lTRow, 1)
複製代碼
再請前輩們分析看看
感謝~

TOP

回復 28# GBKEE

先感謝GBKEE板主的回覆
錯誤訊息目前都排除了
但是卻出現沒有複製"當月報表"中的[綜合資料庫]到
"全年度資料庫"資料表的[綜合資料庫]中

反而出現
開啟"全年度資料庫"資料表的[綜合資料庫]中複製了a1:aq有值的最後一行

"全年度資料庫"資料表的[綜合資料庫]的空白處下方去了

是否可以再請幫忙看看哪裡有問題呢..
  1. Sub nn()
  2.   Dim lSRow&, lTRow&
  3.   Dim sPath$
  4.   Dim bNFind As Boolean
  5.   Dim wsSou As Worksheet, wsTar As Worksheet
  6.   Dim wbSou As Workbook, wbTar As Workbook
  7.   
  8. sPath = ThisWorkbook.Path
  9. ChDrive sPath
  10. ChDir sPath
  11.   Set wbSou = ThisWorkbook
  12.   Set wsSou = wbSou.Sheets("綜合資料庫")
  13.   
  14.   bNFind = True
  15.   For Each wbTar In Workbooks ' 全年度資料庫 檔案是否已開啟
  16.     If wbTar.Name = "全年度資料庫.xlsm" Then
  17.       Set wsTar = wbTar.Sheets("綜合資料庫")
  18.       bNFind = False
  19.       Exit For
  20.     End If
  21.   Next
  22.   If bNFind Then ' 若檔案未開啟則開啟它
  23.     With Workbooks.Open("全年度資料庫.xlsm", , True)
  24.       Set wbTar = ThisWorkbook
  25.       Set wsTar = .Sheets("綜合資料庫")
  26.     End With
  27.   End If
  28.   
  29.   With wsTar
  30.     lSRow = .Cells(.Rows.Count, .[AQ1].Column).End(xlUp).Row ' 找末列
  31.     lTRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  32.     .Range(.[A5], .Cells(lSRow, .[AQ4].Column)).Copy .Cells(lTRow, 1)
  33.   End With
  34. End Sub
複製代碼

TOP

回復 30# GBKEE

感謝GBKEE版主修正後的版本
這版本程式碼比較簡單,而且有註譯也比較好讀了,不過有幾點可否幫忙要修正

1.因AQ有時候會沒有設定值,所以能否只判斷A列有幾行,然後複製A5:AQ(A列最後一行)
2.只儲存關閉"全年度資料庫"
3.只貼上"值"的部分就好
是否把
  1. Rng.Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
複製代碼
修正成
  1.     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  2.         :=False, Transpose:=False
複製代碼

TOP

回復 32# GBKEE

感謝GBKEE版主的修正
    動作方面都OK了,不過貼上值的部分會連儲存格式也貼上去,累積下來的量會使儲存格式部份暴增
本想自己更正,不過不明白那一行的作用到底是怎麼運行的
只好在懇請板主幫忙了

原本以為是改正
  1.         '***3.只貼上"值"的部分就好
  2.         .UsedRange = .UsedRange.Value
複製代碼
不過查詢了一下,此代碼的作用好像都是解釋為'去除公式,所以不太明白怎麼更正...

TOP

回復 32# GBKEE
不好意思,想請教GBKEE版主
這條列試還是不會修改,可否幫忙看看
  1. Rng.Copy .Cells(.Rows.Count, 1).End(xlUp).Offset(1)
複製代碼
有加入過
  1. .PasteSpecial Paste:=xlPasteValues
複製代碼
不過語法錯誤..

抱歉,VB的能力真的很差
再請看看能否只貼上"值",不需要格式條件

TOP

回復 35# GBKEE

感謝GBKEE版主的幫忙
原來要使用另一種寫法來定義範圍
謝謝前輩們的指教~

TOP

        靜思自在 : 一個人的快樂.不是因為他擁有得多,而是因為他計較得少。
返回列表 上一主題