返回列表 上一主題 發帖

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

印象中的寫法
Workbooks("1.xls").Sheets("A1").Rows(2).Copy  Workbooks("1.xls").Sheets("A1").cells(Workbooks("2.xls").Sheets("B1").UsedRange.Rows(1).Count + 1,1)

但此法會連同複製儲存格的格式,但上面大大的寫法則只會複製數值〈.PasteSpecial Paste:=xlPasteValues〉

TOP

是有這個疑慮,但是理論上第一排應該都要有資料,例如ID編碼等唯一性的資料,而我不寫那種方式是曾經遇過非第一排位置的儲存格被"不小心"按到一空白資料,但是這在檢查過程是很難發現的異常,但卻造成資料到那一列就跳行,害我ㄧ直檢查程式是哪邊寫錯,最後當然才知道真正原因,而限制第一欄計算筆數,就可以立即看到問題

TOP

ROW(2)的意思:代表該Sheet的第2"行"
workbooks的意思是? 如果你的複製貼上作業是在同一excel檔案,就可以忽略,但若是不同excel檔案,就像你這個case是不同檔案之間的內容複製,就要加入,而且starry的寫法意思要把基礎2.xls的資料複製到"目前活化的檔案的目前使用Sheet內"

我習慣寫詳細些,這樣Debug會較清楚,但缺點是多號一些資源
    Workbooks("紀錄表-基礎.xls").Sheets("客戶明細").Rows(2).Copy
    Workbooks("2.xls").Sheets("123").EndRow =  Workbooks("2.xls").Sheets("123").UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Workbooks("2.xls").Sheets("123").Rows(EndRow).PasteSpecial Paste:=xlPasteValues

TOP

ActiveSheet.Hyperlinks.Add Anchor:=Range("A1"), Address:="", SubAddress:=Worksheets(I).Name & "!A1", TextToDisplay:=Sheets(I).Name

白話文:在這個頁面下增加一超連結, Anchor代表是哪一個儲存格要加入超連結,Address代表要連結到哪一個檔案〈意思是別的檔案名稱,例如address:="C:\ABC\DEF.xls"),SubAddress代表是那個檔案內的哪一個Sheet的儲存格位置〈根據你的例子,他剛好是在同一個檔案內,所以一來Address是空白,二來他是聯結到那個Sheet的儲存格A1,所以當你點那個連結時候,會直接跑到那個Sheet的A1位置〉,最後TexttoDisplay是說你希望那個儲存格內的聯結名稱,一般預設值是"Link",根據你的例子是希望顯示連結Sheet的名稱

根據以上說明,應該就知道如何擴充了吧

TOP

你應該已經會寫資料貼到最後一筆的VBA程式,所以你也應該知道如何取得最後一筆的行位,接下來只要在該行狀態下,在最後一欄的儲存格將上述的超連結路徑加入,就完成了
靜下心,再思考ㄧ下,就可以寫出VBA程式了

TOP

就是Sheet的編號,因為你有使用For I = 2 to sheets.count,所以Sheets(I).name代表第I個Sheet的名字

For I = 2 To Sheets.Count
     ActiveSheet.Hyperlinks.Add Anchor:=Range("a" & I), Address:="", SubAddress:= _
        Worksheets(I).Name & "!A1", TextToDisplay:=Sheets(I).Name
Next

TOP

        靜思自在 : 君子如水,隨方就圓,無處不自在。
返回列表 上一主題