返回列表 上一主題 發帖

[發問] (已解答,G大謝謝)如何讓自訂表單關閉後暫存,開啟後繼續作業?

回復 1# av8d
表單.Hide   
Hide 方法   隱藏一個物件但不載出。

TOP

回復 3# dafa
Picture 須是已存檔
是這樣嗎?
  1. 'Initialize 事件 發生在一個物件載入後,但尚未顯示的時候。
  2. Private Sub UserForm_Initialize()   'UserForm的預設事件
  3.     UserForm1.Picture = LoadPicture("D:\EX1.GIF")
  4.     CommandButton1.Picture = LoadPicture("D:\EX2.GIF")
  5.     'CommandButton2.Picture = LoadPicture("D:\EX3.GIF")
  6.     'CommandButton3.Picture = LoadPicture("D:\EX4.GIF")
  7. End Sub
複製代碼

TOP

回復 5# dafa
按下表單按鈕 執行 sub 植物() 讀取 圖檔 正常
可以啊,為何不行!!

TOP

回復 7# dafa
為何要那麼多的CommandButton?用何邏輯建立?

TOP

回復 10# dafa
須是你說的:把所有CommandButton對應儲存格再存入對應的檔名才能解決 檔名存於Sheets("工作表1")裡才能如你所願
請修改GW4501表單UserForm_Initialize程式碼 如下
  1. Option Explicit
  2. 'Public dw  'GW45011表單不須宣告: [Module1]模組已宣告過
  3. Public Sh As Worksheet   '須新加公用變數 [TheButton] 模組才可引用
  4. Dim ButtonClass() As New TheButton
  5. Private Sub UserForm_Initialize()
  6. Dim E As Control, i As Integer
  7. Dim hWnd, tPath, oo
  8. GW4501.Height = Sheets("工作表3").Cells(3, 7) / 5
  9. GW4501.Width = Sheets("工作表3").Cells(3, 2) / 5
  10. hWnd = GetForegroundWindow
  11. tPath = ActiveWorkbook.Path & "\底圖\"
  12. 'tPath = Application.GetOpenFilename("EXCE檔(*.XLS),*xls")'
  13. [c1] = tPath
  14. oo = Dir(tPath)
  15. If oo = "" Then
  16.     MsgBox "你底圖資料夾內沒放進圖檔"
  17.     End
  18. Else
  19.     [c2] = tPath & oo
  20.     GW4501.Picture = LoadPicture(tPath & oo)
  21. End If
  22. 'ButtonClass變數設定為 New TheButton物件類別模組
  23. Set Sh = Sheets("工作表1")   '工作表儲存圖表路徑
  24. With Sh
  25.     For Each E In Me.Controls
  26.         If InStr(E.Name, "CommandButton") Then
  27.             i = i + 1
  28.             ReDim Preserve ButtonClass(1 To i)
  29.             Set ButtonClass(i).Button = E     '指定 TheButton.Button(i) 的物件
  30.             '*** CommandButton對應儲存格再存入對應的檔名 ***
  31.             E.ControlTipText = Cells(i, "A").Address(0, 0) & ":"
  32.             If Dir(.Cells(i, "A").Text) <> "" Then
  33.                 E.Picture = LoadPicture(.Cells(i, "A").Text)
  34.                 E.ControlTipText = E.ControlTipText & .Cells(i, "A")
  35.                 'CommandButton的ControlTipText= .Cells(i, "A")的列名及內容(檔名)
  36.             End If
  37.         End If
  38.     Next
  39. End With
  40. End Sub
複製代碼
請修改TheButton模組內
  1. Option Explicit
  2. Public WithEvents Button As MSForms.CommandButton
  3. Private Sub Button_Click()
  4.     Dim S
  5.     S = Split(Button.ControlTipText, ":")
  6.     If S(1) = "" Then
  7.         Call 植物
  8.         Button.Picture = LoadPicture(dw)
  9.         Button.ControlTipText = Button.ControlTipText & dw
  10.         S = Split(Button.ControlTipText, ":")
  11.         GW4501.Sh.Range(S(0)) = dw
  12.          'CommandButton對應的儲存格存入: 檔名
  13.         dw = ""
  14.     End If
  15. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-12-10 07:52 編輯

回復 13# dafa
為什麼物件類別模組那麼少見到人家在使用
大多使用到大量的相同物件或是用程式碼建立的物件: 做同樣的功能,就不必在每一物件模組中寫下程式碼,
如果是 物件 是Sheet (工作表)或Workbook(活頁簿),那ThisWorkbook模組中 Workbook預設事件程式: 就是 該物件類別模組

TOP

        靜思自在 : 【停滯不前,終無所得】人都迷於尋找奇蹟,因而停滯不前;縱使時間再多、路再長,也了無用處,終無所得。
返回列表 上一主題