檔案關於一個以VBA寫的人名資料簿



贊助商連結


頁 : [1] 2

kankan
2002-02-27, 12:55 PM
問題真是多!多!!多!!!....
又是我這位問題少男了...

問題於檔案裡, 請多多指導 (檔案關於一個以VBA寫的人名資料簿)
由於我VBA功力尚淺, 寫得不好請多多包涵!!

:D :rolleyes:

贊助商連結


Oyazi
2002-02-28, 09:25 PM
這種有關係到資料庫的問題
我「強烈」建議移師到ACCESS裡處理
畢竟EXCEL只是個是試算表
你在檔案裡需求的功能
在ACCESS裡只消三四個小時就可以完成
甚至更少
OFFICE會有這麼多套不同的軟體
就是因為這些軟體各司其職
正所謂:工欲善其事,必先利其器呀!!!
共勉之
(扯遠了~~~)
我周末的時候若有空
我就按照你的檔案裡的欄位試寫一下
寫好,我再POST到板上來

leonchou
2002-02-28, 10:29 PM
使用 Access 確實是很好,問題是.. 一般使用者對 Access 的了解有多少? 為了像
Phonebook 這種資料量不大的 case,再去學習使用另一個軟体有無必要? 值得商確。
當然若常有類似需求, 學 Access 是好的, 但以一般公司行號而言...

有沒有考慮過使用 Excel 內建的「表單」功能?
「表單」兼具查詢、新增、修改、刪除等簡易的資料表查詢及維護功能,符合你的需求。
以程式叫出第二張工作表的表單: Sheets(2).ShowDataForm (沒錯, 就是這短短的一行~)
想多了解一點「表單」? 2001/5/20主題: 善用 Excel 的 [表單] 功能 (http://www.pczone.com.tw/showthread.php?t=8779)

如果還是非用你說的方式不可,那麼 --

問題1:
如何可以於某一儲存格內輸入名字, EXCEL會用MSG BOX 之方法告訢我之前輸入的資料?

選取要輸入查詢的工作 (範例是 Sheet1),在工作表名稱標籤按右鍵 >> [檢視程式碼]
然後在空白處貼上這個巨集:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo 1
With Sheets(2)
Set f = .Columns(4).Find(Target)
If f Is Nothing Then _
MsgBox "找不到 " & Target & " 的資料!", 16: Exit Sub
comp = .Cells(f.Row, 3): phone = .Cells(f.Row, 6)
End With
MsgBox "COMPANY: " & comp & " TEL: " & phone, , Target & " 的資料"
1
End Sub

巨集簡述:
在工作表上輸入名字,程式會以此名字到資料所在工作表 (範例是 Sheet2) 姓名欄尋找,
若找不到就顯示找不到的訊息,否則顯示其公司名稱及電話號碼。

問題2:
如何可以利用TEXTBOX , 修改之前輸入的資料?

你都已做好一個 UserForm1 了,就直接拿來再利用嘛。
參考上面巨集中尋找資料的方法,及你那個 [新增] 資料的程式,把找到的資料
再逐欄寫回 UserForm1 的 TextBox 中以供修改。這段程式寫要在 UserForm1 的
Initialize 事件中,也就是 Private Sub UserForm_Initialize() 巨集。

※但有個疑點不知你是否想過:一樣是在工作表輸入名稱,程式如何知道你是要
[查詢] 還是 [修改] ?? 加兩個按鈕,輸入後再選擇? 加個 OptionButton,選擇後再輸入?
還是輸入後讓程式來問你 ? ...每種方式的做法都不盡相同的。

問題3:
如何可以防止輸入相同資料?

那要看「相同資料」的定義是啥 -- 主要欄位相同? 所有欄位相同? 做法也不一樣。
在 UserForm1 原來的 CommandButton1_Click() 巨集 ([新增]按鈕)加入判斷即可。
重點是如果 [新增] 和 [修改] 使用同一個 UserForm,要判斷是何者呼叫,只有 [新增]
時才需要判斷資料是否重覆,Right ?

打了一堆,好累~ 有問題的話再討論吧... :rolleyes: :D

rEdS
2002-03-01, 03:33 AM
最初由 常上此站的動物 發表


是啊!!不知是不是我孤陋寡聞,我身邊的人(同事、朋友)都用Excel較多,沒聽說用Access的耶!:p 是不是比較不普遍啊??會比Excel難很多嗎?:confused:

建議你先買本書回家做點功課再來問人家
這樣子一方面你比較容易深入問題核心
別人也比較容易回答你的問題
總不能叫別人把一整本書的內容
連最基本的東西都打出來給你看吧???
:D

Oyazi
2002-03-02, 12:04 PM
ACCESS是一套撰寫資料庫的軟體
Leon所言甚是,為了一個小小的程式再去學一樣軟體是滿辛苦的
我個人是認為,ACCESS還滿好上手的啦~~~:)
但是先決條件是,你必須要有資料庫系統基本的概念
再去使用ACCESS會更加的容易

以EXCEL來說
你可以在不同的SHEET中利用函數來相互連結
達到查詢、計算、核對等作業
就如同我之前說的,EXCEL畢竟只是試算表
它所可以處理的資料量是有限的
而且,在EXCEL中,資料量越大,開啟檔案的時間就越長
當然,現在電腦的運算速度說不一定已經可以cover掉這個問題

ACCESS同樣的也可以完成上述的部分作業
最基本的ACCESS是由資料表、查詢、表單三個元素所組成
資料表用以儲存資料,就像KANKAN兄所附檔案的SHEET2一般
查詢用以計算、查詢、連結不同資料表間的相互關係
表單一般用以當作使用者與資料庫間的溝通介面,就如同KANAKN兄SHEET1裡按下按鈕後出現的FORM一樣
以KANAKN兄的問題來說
也許只要用到資料表及表單就可以完成
應該不用用到查詢的功能
我個人覺得ACCESS最大的好處是它可以處理龐大的資料量
而且速度相當的快
對於一些需要多資料的比對與篩選時,ACCESS更顯得其功能的強大
而且在表單的設計上還有提供精靈
可以一步一步的依照畫面的指示完成使用者的介面

話說回來
我在回應第一篇文章的時候
真的沒有顧慮到Leon兄所說的問題

這樣說好了
我是一個喜歡找捷徑的人
每個問題都會有其最完美的解決方法
有時在尋找最好的方法所花費的時間
就足以讓你解決你的問題
那為何不先解決眼前的問題,再來找找有沒有更有效的方法呢?

沙拉油
2002-03-02, 08:04 PM
題外話....
貴公司的螢幕一定很大~~ ^^

Oyazi
2002-03-04, 09:44 PM
最初由 沙拉油 發表
題外話....
貴公司的螢幕一定很大~~ ^^

啥米意思~~~!?看嚨嘸...
p.s.我素學生

leonchou
2002-03-05, 03:55 AM
我想沙兄是指kankan的範例檔裡面..
那個自訂表單真是大的可以~
所以猜想他們公司的螢幕一定很大!
..沒錯吧? e_e

沙拉油
2002-03-05, 10:28 AM
Oyazi兄您好!
小弟指的的確如Leon Chou前輩所說的。

kankan
2002-03-05, 12:50 PM
最初由 沙拉油 發表
Oyazi兄您好!
小弟指的的確如Leon Chou前輩所說的。

大家都猜錯了, 我只不過將解析度調高至1024X768....嘻嘻
我的螢幕都只不過是15"罷了