Board logo

標題: [發問] 限當【工作表】使用的變數 [打印本頁]

作者: 蝕光迴狼    時間: 2014-10-31 15:44     標題: 限當【工作表】使用的變數

請問 Sheet1 工作上有多份巨集,目前有個問題請求各位協助幫忙:

 1.宣告變數要怎麼寫?才能只適用於(Sheet1)工作表使用。

 2.例如Sheet1工作頁的5巨集,但以下變數是共通的,不想每個巨集都再宣告一次。
  1.     dm = "D:\測試用\"   '搜尋主路徑
  2.     ML1 = Range("C3") '搜尋檔案資料夾目錄一
  3.     ML2 = Range("C4") '搜尋檔案資料夾目錄二
複製代碼

作者: mark15jill    時間: 2014-10-31 17:12

本帖最後由 mark15jill 於 2014-10-31 17:18 編輯

回復 1# 蝕光迴狼


    如果只是單純在 sheet1內,要使用共通變數,就在最上方宣告
    差別如下
    1.若在功能區內(例如 label textbox ) 宣告,則該變數只限定在該功能區內使用,其他區域會找不到。 >>>區域變數
    2.若在最上方宣告,則該變數屬於通用變數,其他功能區可以找的到。   >>> 全域變數
   
     因只看到你的3行程式碼,故單純列以下程式碼做參考
  1.     Dim dm, ML1, ML2 As String
  2.    
  3.     dm = "D:\測試用\"   '搜尋主路徑
  4.     ML1 = Range("C3") '搜尋檔案資料夾目錄一
  5.     ML2 = Range("C4") '搜尋檔案資料夾目錄二

  6. Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  7. 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]
  1. Dim kk, te1, te2, te3, te4, te5 As String


  2. Private Sub Frame1_Click()

  3. End Sub

  4. Private Sub UserForm_Activate()
  5. Application.DisplayAlerts = False '提示視窗消失
  6.     Dim objFs As Object
  7.     Set objFs = CreateObject("Scripting.FileSystemObject")
  8. End Sub
  9. Private Sub CommandButton2_Click()
  10.     Call x
  11.     If Dir(tet4 & "\" & "*") <> "" Then fsd.copyfile tet4 & "\", ddm
  12.    
  13.     Shell "explorer " & tet4, vbNormalFocus  ' "explorer  "空一格 + (連接上)要開啟的資料夾 或 檔案
  14. End Sub
  15. Private Sub CommandButton3_Click()
  16.     Call x
  17.     Dim sss As String
  18.     sss = Dir(te3)
  19.     If sss <> "" Then fsd.copyfile fd & sss, gb:         Shell "explorer  " & gb, vbNormalFocus: End If
  20. End Sub
  21. Private Sub CommandButton4_Click()
  22.         Shell "explorer " & "\\d1502111\暫存區\" & TextBox5.Text, vbNormalFocus  '"explorer  "空一格 + (連接上)要開啟的資料夾 或 檔案
  23. End Sub
  24. Function x()
  25.       
  26.      With Application.FileDialog(msoFileDialogOpen)
  27.        .AllowMultiSelect = True:        .Show
  28.        For i = 1 To .SelectedItems.Count:              TextBox4.Text = .SelectedItems(i):        Next
  29.         tet4 = TextBox4.Text
  30.     End With
  31.    
  32.     te1 = TextBox1.Text: te2 = TextBox2.Text: te3 = TextBox3.Text
  33.     dm = "C:\測試用\"
  34.     ddm = "C:\下載區\"
  35.     fd = dm & te1 & "\" & te2 & "\"
  36.     gb = "C:\" & te3
  37.    
  38.     '用dir函數中的vbDirectory常數來判斷資料夾是否存在
  39.     CurrentFile = Dir(gb, vbDirectory)
  40.     '傳回空白,表示資料夾不存在
  41.     If CurrentFile = "" Then MkDir gb:          End If
  42.    
  43.    
  44. End Function
  45.             'Cells(i, 1) = .SelectedItems(i)
  46.          '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/)