標題:
[發問]
(謝謝多位版主的大力幫忙,完成)如何將定義延伸成可以手動修改?(自訂表單)
[打印本頁]
作者:
av8d
時間:
2012-6-22 11:28
標題:
(謝謝多位版主的大力幫忙,完成)如何將定義延伸成可以手動修改?(自訂表單)
本帖最後由 av8d 於 2012-6-23 16:35 編輯
Sub test()
Dim rng As Range, cell As Range
Application.ScreenUpdating = False
w = "家用,早餐,午餐,晚餐"
End Sub
我執行都是用Call test
希望可以w的的限制可以不要寫死~可以
新增刪除修改
~
我該怎麼做呢? 我是否要再製作一個UserForm呢?
作者:
oobird
時間:
2012-6-22 12:57
w = InputBox("輸入字串,用豆號分開:")
If w = "" Then End
作者:
av8d
時間:
2012-6-22 23:35
本帖最後由 av8d 於 2012-6-22 23:50 編輯
w = InputBox("輸入字串,用豆號分開:")
If w = "" Then End
oobird 發表於 2012-6-22 12:57
w是否的值是否能固定?
每當需要新增刪除修改的時候在讀取功能鍵
作者:
Hsieh
時間:
2012-6-22 23:58
回復
3#
av8d
這應該是公用變數設置的技巧就能解決
你是在此主程式中要引用w變數
在一般模組宣告公共變數w
Public w$
複製代碼
開啟檔案時先將w給值
Sub auto_open()
w = "家用,早餐,午餐,晚餐"
End Sub
複製代碼
執行修改程序
Sub 修改()
w = InputBox("輸入逗點分隔字串", , w)
End Sub
複製代碼
主程式
Sub test()
MsgBox w
End Sub
複製代碼
[attach]11460[/attach]
作者:
av8d
時間:
2012-6-23 00:20
本帖最後由 av8d 於 2012-6-23 00:25 編輯
回復
4#
Hsieh
謝謝大大~這方法很好用~可是
起始資料-->家用,早餐,午餐,晚餐
修改後-->家用,早餐,午餐,晚餐,特別費
關閉Excel
開啟Excel
資料變成起始資料-->家用,早餐,午餐,晚餐
而不是修改後的資料-->家用,早餐,午餐,晚餐,特別費
不知道這是什麼原因?
是不是因為只要是記憶的部分都必須在儲存格上才能儲存?如 A1 B1 C1 等等
作者:
GBKEE
時間:
2012-6-23 08:37
本帖最後由 GBKEE 於 2012-6-23 08:47 編輯
回復
5#
av8d
關閉Excel 變數就歸0了,可用定義名稱保留住
Option Explicit
Sub Auto_Open()
Dim Msg As Boolean, n As Name
With ThisWorkbook
For Each n In .Names
If n.Name = "w" Then Msg = True: Exit For
Next
If Msg = False Then .Names.Add "w", "家用,早餐,午餐,晚餐"
End With
End Sub
Sub 修改()
Dim A As String
A = InputBox("輸入逗點分隔字串", , [w])
If A <> "" Then ThisWorkbook.Names("w").Value = A '可預防 取消InputBox 或是 = ""
MsgBox [w] '定義名稱內容
End Sub
複製代碼
作者:
av8d
時間:
2012-6-23 13:33
本帖最後由 av8d 於 2012-6-25 08:43 編輯
回復
6#
GBKEE
大大謝謝,請問我該如何和我的程式碼做結合呢
Sub test()
Dim rng As Range, cell As Range
Application.ScreenUpdating = False
w = "家用,早餐,午餐,晚餐"
End Sub
由於 w = "家用,早餐,午餐,晚餐" 下方還有很多程式碼
作者:
GBKEE
時間:
2012-6-23 15:15
回復
7#
av8d
Option Explicit
'Public xlTheW As String 'Public 所有模組皆可用的變數
Private xlTheW As String 'Private 或 Dim 只有這模組可以用的變數
Sub Auto_Open() '此程序用意在如沒有定義名稱 新增定義名稱
Dim Msg As Boolean, n As Name
'Boolean 資料型態 預設為 False
'Boolean 變數係以 16 位元( 2 個位元組)數字的形式儲存,但只能是 True 或是 False。Boolean 變數的值不是 True 就是 False ( 在使用 Print 的時候 ),或是 #TRUE# 和 #FALSE# ( 在使用 Write # 的時候 )。使用關鍵字 True 與 False 可將 Boolean 變數指定為這兩個狀態中的一個。
'當轉換其他的數值型態為 Boolean 時,0 會轉成 False,而所有其他的值則變成 True。當轉換 Boolean 值為其他的資料型態,時,False 成為 0 ,而 True 成為 -1。
With ThisWorkbook ' With 這活頁簿
For Each n In .Names '.Names : 這活頁簿的定義名稱集合
If n.Name = "w" Then Msg = True: Exit For '找到w : Msg = True
Next
If Msg = False Then .Names.Add "w", "家用,早餐,午餐,晚餐"
'沒找到w : Msg = False ;'.Names.Add : 活頁簿中新增定義名稱
End With
End Sub
Sub 修改() '這程序 用於你的修改
Dim A As String
A = InputBox("輸入逗點分隔字串", , [W])
If A <> "" Then ThisWorkbook.Names("w").Value = A '可預防 取消InputBox 或是 = ""
End Sub
Sub test() '你要於程式中取得名稱的值
Dim A
xlTheW = [W] '將名稱的值傳給 xlTheW
' xlTheW = Evaluate(ThisWorkbook.Names("W").Value) '將名稱的值傳給 xlTheW
MsgBox xlTheW
End Sub
複製代碼
作者:
Hsieh
時間:
2012-6-23 15:30
回復
7#
av8d
這個問題已經回答到這程度,你應該要去了解變數是如何運作的
既然已經用到定義名稱來儲存字串
那麼,w變數就是該定義名稱的內容
之後在整個活頁簿內要調用這個字串
只要呼叫該名稱即可
Sub auto_open() '開啟檔案時觸發此程序
Dim n As Name
For Each n In ThisWorkbook.Names '檢查活頁簿內的名稱
If n.Name = "逗點分隔字串" Then Exit Sub '如果此名稱存在就離開程序
Next
ThisWorkbook.Names.Add "逗點分隔字串", "家用,早餐,午餐,晚餐", 0 '加入隱藏的名稱
End Sub
Sub 主程序()
w = [逗點分隔字串] '取出名稱內容賦給變數
MsgBox w
End Sub
Sub 修改()
Dim mystr$
mystr = InputBox("輸入逗點分隔字串", , [逗點分隔字串]) '輸入新字串
If mystr = "" Then MsgBox "字串不得為空白": Exit Sub '避開空字串取代原定義內容
Names("逗點分隔字串").Value = mystr '將新字串寫入名稱
End Sub
複製代碼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)