標題:
[發問]
限當【工作表】使用的變數
[打印本頁]
作者:
蝕光迴狼
時間:
2014-10-31 15:44
標題:
限當【工作表】使用的變數
請問 Sheet1 工作上有多份巨集,目前有個問題請求各位協助幫忙:
1.宣告變數要怎麼寫?才能只適用於(Sheet1)工作表使用。
2.例如Sheet1工作頁的5巨集,但以下變數是共通的,不想每個巨集都再宣告一次。
dm = "D:\測試用\" '搜尋主路徑
ML1 = Range("C3") '搜尋檔案資料夾目錄一
ML2 = Range("C4") '搜尋檔案資料夾目錄二
複製代碼
作者:
mark15jill
時間:
2014-10-31 17:12
本帖最後由 mark15jill 於 2014-10-31 17:18 編輯
回復
1#
蝕光迴狼
如果只是單純在 sheet1內,要使用共通變數,就在最上方宣告
差別如下
1.若在功能區內(例如 label textbox ) 宣告,則該變數只限定在該功能區內使用,其他區域會找不到。 >>>區域變數
2.若在最上方宣告,則該變數屬於通用變數,其他功能區可以找的到。 >>> 全域變數
因只看到你的3行程式碼,故單純列以下程式碼做參考
Dim dm, ML1, ML2 As String
dm = "D:\測試用\" '搜尋主路徑
ML1 = Range("C3") '搜尋檔案資料夾目錄一
ML2 = Range("C4") '搜尋檔案資料夾目錄二
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub
複製代碼
作者:
蝕光迴狼
時間:
2014-10-31 17:44
回復
2#
mark15jill
感謝 mark15jill 大大說明,按照你的方式,出現異常不知要如何處理,可否教導解惑?
作者:
mark15jill
時間:
2014-10-31 18:50
回復
3#
蝕光迴狼
= = 你不會直接把他貼上吧? 你貼在哪??
還是你要貼程式碼圖出來 說明你錯誤的區域 和怎貼上的?
或者 想要得結果? 這樣才知道 你想要得是啥...
[attach]19437[/attach]
作者:
蝕光迴狼
時間:
2014-10-31 19:42
回復
4#
mark15jill
Dear mark15jill 大大:
檔案請附件,謝謝您,麻煩您費神了∼
作者:
mark15jill
時間:
2014-10-31 20:12
回復
5#
蝕光迴狼
跟你確認一下
你要的是... 上傳 and 下載 and 確認檔案是否存在 這三個功能 對吧?
對的話... 我幫你改版完再po上來
作者:
蝕光迴狼
時間:
2014-10-31 21:21
回復
6#
mark15jill
是的 mark15jill 大大,如你所述,再次感謝您的幫忙∼
作者:
mark15jill
時間:
2014-10-31 22:58
本帖最後由 mark15jill 於 2014-10-31 23:01 編輯
回復
7#
蝕光迴狼
我的excel怪怪的 無法存檔... 只好貼代碼和圖給你= =""
改用呼叫副程式的方法...
因為 如果放在同一個副程式,有可能會重複複製
所以 複製的部份 提出來另行處理
再者... 你的程式 邏輯好亂... 跳來跳去跳來跳去... 跳到原本的程式錯亂...
[attach]19441[/attach]
Dim kk, te1, te2, te3, te4, te5 As String
Private Sub Frame1_Click()
End Sub
Private Sub UserForm_Activate()
Application.DisplayAlerts = False '提示視窗消失
Dim objFs As Object
Set objFs = CreateObject("Scripting.FileSystemObject")
End Sub
Private Sub CommandButton2_Click()
Call x
If Dir(tet4 & "\" & "*") <> "" Then fsd.copyfile tet4 & "\", ddm
Shell "explorer " & tet4, vbNormalFocus ' "explorer "空一格 + (連接上)要開啟的資料夾 或 檔案
End Sub
Private Sub CommandButton3_Click()
Call x
Dim sss As String
sss = Dir(te3)
If sss <> "" Then fsd.copyfile fd & sss, gb: Shell "explorer " & gb, vbNormalFocus: End If
End Sub
Private Sub CommandButton4_Click()
Shell "explorer " & "\\d1502111\暫存區\" & TextBox5.Text, vbNormalFocus '"explorer "空一格 + (連接上)要開啟的資料夾 或 檔案
End Sub
Function x()
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True: .Show
For i = 1 To .SelectedItems.Count: TextBox4.Text = .SelectedItems(i): Next
tet4 = TextBox4.Text
End With
te1 = TextBox1.Text: te2 = TextBox2.Text: te3 = TextBox3.Text
dm = "C:\測試用\"
ddm = "C:\下載區\"
fd = dm & te1 & "\" & te2 & "\"
gb = "C:\" & te3
'用dir函數中的vbDirectory常數來判斷資料夾是否存在
CurrentFile = Dir(gb, vbDirectory)
'傳回空白,表示資料夾不存在
If CurrentFile = "" Then MkDir gb: End If
End Function
'Cells(i, 1) = .SelectedItems(i)
'MsgBox .SelectedItems(i)
複製代碼
作者:
蝕光迴狼
時間:
2014-11-1 01:48
回復
8#
mark15jill
謝謝 mark15jill 大大這麼用心的幫我,
因為本身功力不足尚在學習,讓您勞心勞力了,再次感謝∼
不過∼我盡量不想做成那種視窗型態,是因為不好維護與日後修改,
所以才想盡量程式碼越簡潔越好.....
再幫忙我一下,拜託∼
作者:
mark15jill
時間:
2014-11-1 02:17
本帖最後由 mark15jill 於 2014-11-1 02:23 編輯
回復
9#
蝕光迴狼
不想做視窗化...
就把視窗化的變數改成儲存格的...
例如textbox1 改 回你原本設定的
基本上 除了變數更改外 其餘的 跟你程式一樣... 只是看起來比較雜...
有用了統合副程式... 相同的在副程式設定後 不同的在額外處理
個人比較習慣 用userform統整... 畫面比較乾淨整齊...雖然有可能文字大小比較小...
但好處 可移出.. 當做零件用
ps...我睡覺了ˇˇ 晚安
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)