2016-12-21 65 views
1

我從1996年開始就有了這個非常古老的宏(是的!),我認爲它有些Visual Basic(不確定是否),我無法在VBA中工作。大部分代碼運行良好,但我很困擾UserForm,因爲它在此代碼中被稱爲Dialog
我想我需要創建一個用戶表單,而不是VB操作。但我不知道如何解決它。我應該只是創建一個新的用戶表單,並根據座標放置對象,然後它將工作或什麼是最佳實踐?如何將VB UserDialog轉換爲VBA UserForm?

 Begin Dialog UserDialog x,y,291,171,"Batch Printing",.DialogFunction 
      OKButton 204, 152, 40, 14 
      CancelButton 248, 152, 40, 14 
      Text 8, 4, 20, 8, "Path:", .Text1 
      TextBox 8, 16, 96, 12, .dPath 
      Text 8, 56, 32, 8, "Files:", .Text2 
      ListBox 8, 68, 96, 96, sFilesList$, .dFiles 
      PushButton 36, 36, 40, 14, "&Refresh", .dRefresh 
      GroupBox 112, 8, 176, 92, "Select a printer", .SelectPrinter 
      OptionGroup .PrinterSelection 
        OptionButton 120, 24, 92, 8, "&Default Printer", .DefPrint 
        OptionButton 120, 56, 84, 8, "&Specific Printer", .SpecPrint 
      Text 128, 36, 148, 8, sDefaultPrinter, .Text3 
      DropListBox 120, 68, 160, 52, sPrinterList, .SpecificPrinter 
    End Dialog 
+1

IMO唯一可靠的安全方式來轉換UserDialog是爲您的VBA項目添加一個新的UserForm並從頭開始重新創建它。 –

+0

@ Mat'sMug謝謝。我也想到了這一點,但我很難找到有關'UserDialog'的信息以及這些參數的含義。 – Niclas

+1

你可能會更好地從原始屏幕截圖重新設計它。 4個第一個參數看起來像是座標,然後在與控件相關時有一個標題,另一個參數似乎分配一個*對話框函數*,無論如何。可能會映射到對話框的代碼隱藏中的「Property Get」和「Property Let」成員。 –

回答

0

的WordBasic是很老。有some ability in some versions of Word to automatically convert WordBASIC to VBA,所以你可以嘗試,如果你可以找到正確的版本(可能是越早越好,回到Word 97時,VBA被引入),但我真的不會期望一大堆。

最好的辦法可能是按照你的建議來做:在VBA風格下創建一個新的表單,使用代碼作爲需要什麼控件的基線,以及大致的對話框是如何佈置的,並將邏輯連接到其餘的代碼根據需要。

與所有移植項目一樣,「最佳實踐」是確保您儘可能瞭解真實的業務需求,並使用現有的代碼作爲指導(並幫助更好地瞭解真實的業務需求),但真的實現現代代碼「正確的方式」來實現您的實際業務目標,而不是僅僅嘗試逐行移植。