Board logo

標題: [發問] 如何從sheet1 儲存至Sheet3 [打印本頁]

作者: kcho    時間: 2010-5-11 06:39     標題: 如何從sheet1 儲存至Sheet3

我在sheet1工作表 從b6:h25裡輸入資料後,按儲存按鈕( CommandButton1_Click() ) 後,可直接存至sheet3 的b6:h6 並且可以一直增加資料

請問該程式如何寫呢? 麻煩請高手幫我解答 謝謝
作者: 老夏    時間: 2010-5-11 08:52

本帖最後由 老夏 於 2010-5-11 20:08 編輯

[Sub Macro1()
[A].Copy [N]
End Sub
作者: john2006168    時間: 2010-5-12 00:37

不會吧這麼簡單
作者: kcho    時間: 2010-5-12 00:50

謝謝樓上大大的幫忙.

可是我遇到一個問題,因我想要sheet1當作是類似資料輸入 ,而sheet3是類似資料庫,當我第一次在sheet1  b6:h25 輸入有三筆資料時 再按儲存後至sheet3 後有copy ,但第二次輸入 時可能五筆資料 他會把前面的三筆覆蓋上去 而無法一直在往下列增加資料 請問該怎麼做呢?
作者: 老夏    時間: 2010-5-12 11:14

脫褲子放屁

sheet3資料清單
資料直接輸入便是
作者: PD961A    時間: 2010-5-12 17:22

本帖最後由 PD961A 於 2010-5-12 17:26 編輯
謝謝樓上大大的幫忙.

可是我遇到一個問題,因我想要sheet1當作是類似資料輸入 ,而sheet3是類似資料庫,當 ...
kcho 發表於 2010-5-12 00:50


夏板主的意思是
你一開始的需求
"我在sheet1工作表 從b6:h25裡輸入資料後,按儲存按鈕( CommandButton1_Click() ) 後,可直接存至sheet3 的b6:h6 並且可以一直增加資料--請問該程式如何寫呢?
當時你是希望用到    "CommandButton1的鍵持續在SHEET1增加資料到SHEET3的功能"所以你的SHEET3當然不能再當成資料庫使用
會跟你的定義名稱相衝突的.....
謝謝!
作者: HUNGCHILIN    時間: 2010-5-12 21:00

夏兄這題回的很妙
是個好答案
作者: luhpro    時間: 2010-5-12 21:52

本帖最後由 luhpro 於 2010-5-12 21:55 編輯

我大概知道你的意思了,你是希望每次按下 Botton 時都能把目前在Sheet1 的資料 "新增" 到 Sheet3 現有的資料下方,而把歷次所增加的資料合起來當成一個資料庫來用.

基本上 Copy 資料的方式就參照上方即可, 至於判斷 Sheet3 目前最後一筆資料是從哪裡開始,則可以利用  Sheet3.Range("B65536").End(xlUp).Row 的方式取得.
關鍵部份程式如下,就看你怎麼套用囉 :

因為你的資料庫想從 Sheet3 的 b6 儲存格開始放資料, 為簡化程式的判斷, 建議可以考慮事先在 Sheet3 的 b5 儲存格隨便放個資料,則:
按下按鈕後 -

1. 取得 Sheet3 的資料末行位置 :
iRows = Sheet3.Range("B65536").End(xlUp).Row

2. 從 Sheet1 Copy 資料到 Sheet3
   Sheet1.Range("b6:h25").Copy Sheet3.Cells(iRows + 1, 2)

3. 清除原始資料區等待使用者輸入新資料 (因為每次資料量不固定 故建議應將上次的資料清除乾淨再繼續新增資料)
Sheet1.Range("b6:h25").Clear

如此應該就是你想要的功能.
作者: Min    時間: 2010-5-12 22:00

您要的是這樣嗎?
Sub ValCopy()
    Dim lRowEnd As Long

    lRowEnd = Worksheets("Sheet3").Range("B65536").End(xlUp).Row + 1
    Worksheets("Sheet1").Range("B2:K2").Copy Worksheets("Sheet3").Cells(lRowEnd, 2)
   
End Sub
作者: 老夏    時間: 2010-5-13 08:02

本帖最後由 老夏 於 2010-5-13 14:13 編輯

[attach]356[/attach]

從善如流,那就脫褲子吧!


定義名稱
A=OFFSET(Sheet1!$B$6,,,COUNTA(Sheet1!$B$6:$B$25),7)
N=OFFSET(Sheet3!$B$5,COUNTA(Sheet3!$B$5:$B$65536),)

Sub 脫褲子放屁()
    [A].Copy [N]'複製到
    [A].ClearContents'清除
End Sub

**************************************************
工作表可以
更名
刪除A欄

VBA無宣告
作者: HUNGCHILIN    時間: 2010-5-15 21:58

這一題大家回覆的很踴躍
但有點複雜化了
*********************************
我們來看看這一題為什麼夏兄
回的很妙的原因

我看了很認同夏兄的做法
也很有感觸這很重要
首先是觀念性問題 OFFICE能用基本功能就用基本功能 能不用巨集就盡量不用巨集
在這原則下夏兄做到了用定義函數運算主程式然後再將結果放到巨集
就單這兩行定義 算出了複製區與要貼到哪裡的定位點
A=OFFSET(Sheet1!$B$6,,,COUNTA(Sheet1!$B$6B$25),7)
N=OFFSET(Sheet3!$B$5,COUNTA(Sheet3!$B$5B$65536),)
作者: steven_lkk    時間: 2010-8-27 00:18

您好~我剛剛開始學著製作一些excel 功能,我遇到同樣的問題,而更不瞭解如何製作儲存按鈕( CommandButton1_Click() ) ,但是我是新成員,所以無法下載各位前輩的範例來研究,所以各位前輩可否再教育一下小弟,或可以將前輩的範例寄給我呢? [email protected] ,感恩.




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)