Board logo

標題: 記錄表建立問題請教 [打印本頁]

作者: Andy2483    時間: 2022-9-8 16:38     標題: 記錄表建立問題請教

各位前輩好
後學虛擬了一個簡易的動物醫院看診記錄做學習,有一些疑問想請教各位前輩
1.自訂表單彈出後如何讓游標直接在輸入窗上!不必再滑鼠點輸入窗
2.後學使用一個可產生程式碼的方法,因應使用者的需求更動欄位,不必改程式碼
    請教各位前輩有沒有其他方法?
3.自動計算一個月內的寵物生日變底色 有時會有差一天的問題!如何精算?
4.執行速度如何提升?縮短時間!
5.程式碼可如何精簡?或修正錯誤?
6.其他未提出的問題後續再提出

謝謝各位前輩指導
祝 中秋佳節 平安喜樂

[attach]35194[/attach]
[attach]35195[/attach]
[attach]35196[/attach]
PS:職場上的工作資料不方便作範例發帖學習,虛擬情境作學習
作者: Andy2483    時間: 2022-9-8 16:43

1.自訂表單彈出後如何讓游標直接在輸入窗上!不必再滑鼠點輸入窗

[attach]35197[/attach]
作者: Andy2483    時間: 2022-9-8 16:45

2.後學使用一個可產生程式碼的方法,因應使用者的需求更動欄位,不必改程式碼
    請教各位前輩有沒有其他方法?

Option Explicit
Sub 自動產生標題CODE()
Dim i&, x&, 輔助表標題欄rr, 輔助表變數欄rr, Coderr, 列數&
Sheets("Code生成輔助表").Select
輔助表標題欄rr = Range([AA1], Cells([AA65536].End(xlUp).Row, "AA"))
輔助表變數欄rr = Range([AB1], Cells([AB65536].End(xlUp).Row, "AB"))
ReDim Coderr(1 To UBound(輔助表標題欄rr) * 5, 1 To 1)
Coderr(1, 1) = "Option Explicit"
Coderr(2, 1) = "Public 輔_標題rr, 操_標題rr, 標題辨識輔助NO, 標題辨識輔助rr, 停頓時間& , Acc&, Asrc&"
列數 = 3


~~~~~
作者: 軒云熊    時間: 2022-9-11 19:17

回復 2# Andy2483

Private Sub UserForm_Activate()
' 自訂表單彈出後 讓游標直接在輸入窗上!不必再滑鼠點輸入窗
TextBox1.SetFocus
For i = 1 To 8
   Set List(i) = 輸入清單("List" & i)
Next

End Sub
作者: 軒云熊    時間: 2022-9-11 20:00

回復 3# Andy2483

更動結果欄位  不知道 是不是你要的 試試看吧
   
'[A1].Resize(UBound(Coderr), UBound(Coderr, 2)) = Coderr
y = Application.InputBox("請輸入欄位:")
Cells(1, CInt(y)).Resize(UBound(Coderr), UBound(Coderr, 2)) = Coderr


Set Coderr = Nothing
End Sub
作者: Andy2483    時間: 2022-9-11 20:23

回復 4# 軒云熊
謝謝前輩指導
星期二才能在PC上測試學習
作者: Andy2483    時間: 2022-9-11 21:06

回復 5# 軒云熊
謝謝前輩指導
後輩沒表達清楚,再用另一個方式說明
1.由於公司主管或使用者在整個程式碼已經寫的很複雜的情況下,硬是要增加欄位或更動欄位!改程式碼會很麻煩,
所以就安插了很多的備用欄先隱藏,以備主管增加欄位,但欄位更動還是要改程式碼
2.後學想到標題列的每個抬頭都不一樣,所以用抬頭列來辨識資料欄有沒有變動
3.因為每次新的專案都要重新寫一次辨識欄位的程式碼,所以就將操作表的抬頭列轉置到輔助表AA欄,AB欄的文字定義為容器,自動用程式碼辨識輔助表寫成程式碼在新活頁簿
4.將3所產生的程式碼複製貼到VB裡使用

以上是後學暫時想到的辦法,能方便解決 增加欄位或變動欄位的需求!不必大幅度改動既成的程式碼

重點是 各位前輩是如何在程式碼寫的很複雜的時候配合使用者需求 增加欄位或欄位調前調後?
作者: Andy2483    時間: 2022-9-11 21:44

回復 4# 軒云熊

SetFocus在範例裡好像也有!
後學是使用多年前收藏 的很精簡的版主範例 五層清單 ,改成自己看的懂又能符合需求的零落碼。
學了很多年,進步緩慢!幾乎都是抄襲前輩們的範例先套用可以用再更深入了解,
不是譁眾取寵,也不是要得積分!
單存是後學程度不好!用自己的方法逼自己學習。
還有多個先前前輩幫忙解決指導的程式碼都還看不懂,又不想放棄學習。
謝謝前輩們的指導
作者: Andy2483    時間: 2022-9-13 07:07

回復 4# 軒云熊


    謝謝前輩指導
測試OK!
作者: Andy2483    時間: 2022-9-23 16:39

回復 5# 軒云熊


    謝謝前輩指導
今日習得解決問題2.的方法,並提升效能
"2.後學使用一個可產生程式碼的方法,因應使用者的需求更動欄位,不必改程式碼請教各位前輩有沒有其他方法?"
http://forum.twbts.com/thread-23775-1-1.html

[attach]35233[/attach]

[attach]35234[/attach]
作者: 准提部林    時間: 2022-9-24 13:57

回復 10# Andy2483


不要強求使用者可做增減欄位的通用程式!!
程式開發維護者 與 使用者 是兩個分界, 不可能完全靠程式去自動整合, 這也無端讓自已陷入不必要的考慮(千慮必有失),
反而, 一般的設計者會設定保護表格的架構, 防止使用者任意更動(包括各欄位應輸入的資料格式,例如: 數值或日期或文字),
尤其是...若表格有使用公式的欄位更須保護!!!

當需求有所增減時, 還是要由設計者進入程式去增修,
所以, 要先去構思...如何讓以後的增修更加方便又正確而不生錯(bug),  
尤其各模組程式之間若有互相引用, 有時是動一髮動全身。

很多人都想做一個通用程序, 但反而讓檔案更難使用, 因為那檔案必然會加入很多的"選項"以輸入參數,
最後, 使用者矇了, 設計者自己也茫了(忘了哪個關節與哪個相關), 越做與原來的想法也越遠~~~
作者: singo1232001    時間: 2022-9-24 14:59

回復 10# Andy2483


沒有
就算有 也千萬別做


同意准大的看法

資料表格式  資料庫架構  欄位 這3者千萬別讓使用者觸碰到!

他們要是能碰到 就是鍋從天上來的時候

基本上寫vba 要盡可能避免使用者能碰到資料庫的任何情況! 更甚至連資料庫與資料表都不該讓使用者發現!
作者: Andy2483    時間: 2022-9-24 17:00

回復 11# 准提部林
謝謝前輩指導
難怪PLM,SAP 導入時需要開這麼多會議,雖然後輩不是MIS,沒機會參與,而是使用者的角色,一但導入之後實際使用測試後,怨言四起,只要談到了結構!最後的結論就就是不能改,原因是當初你們的主管是這樣叫我們輔導商設計的!有些小修改需要另收費用,有些是完全不能改的!
謝謝前輩
作者: Andy2483    時間: 2022-9-24 17:08

回復 12# singo1232001
謝謝前輩指導
“基本上寫vba 要盡可能避免使用者能碰到資料庫的任何情況! 更甚至連資料庫與資料表都不該讓使用者發現!”

這對後輩來說還很難吧!這樣的境界應該是需要很多的自訂表單才能實現!
後學要學的還很多!
謝謝前輩
作者: 准提部林    時間: 2022-9-24 19:30

本帖最後由 准提部林 於 2022-9-24 19:42 編輯

回復 13# Andy2483

設計者與使用者始絡有道鴻溝, 程式是按使用者需求來寫的...客製化,
但使用者並無法全盤了解自己的需要有哪些?
都是概念而已, 卻希望設計者能"體會"他沒想到的問題或需求? 哪有可能? 去問卦嗎?
等寫好了, 才發現缺東缺西, 要求修修改改, 這都要多花時間, 有時原程式也要打掉重寫!!!

所以, 市面上都是給套裝再分版, 看使用者的需求去套用不同版本,
是使用者遷就套裝, 而不是處處遷就使用者, Windows 及 Office 就是這樣, 就算是更新, 也大部份只針對bug及補漏~~
作者: Andy2483    時間: 2022-9-24 19:59

回復 15# 准提部林
謝謝前輩指點




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