2014-11-07 58 views
0

新,並想問問是否有人可能檢查我的代碼,看看我在哪裏犯了一個錯誤。VBA模塊在用戶表單中調用差異表

首先,我創建了一個帶有兩個文本框和兩個按鈕的窗體,它們將獲取兩個不同的目錄和相關文件。這是通過調用一個將dir加載到文本框的函數來完成的。

一個按鈕來調用一個函數瀏覽目錄,並得到該文件

Private Sub CommandButton3_Click() 
 
'call selectFile function to select file 
 
selectFile 
 
End Sub

函數來獲取工作簿到文本框1和2:

Public Function selectFile() 
 
Dim fileNamePath1 As String 
 
Dim fileNamePath2 As String 
 
Dim workbookFilePath1 As String 
 
Dim workbookFilePath2 As String 
 
    
 
On Error GoTo exit_ 
 
    
 
If workbookFilePath1 = Empty And workbookFilePath2 = Empty Then 
 
    fileNamePath1 = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Open Workbook 1", MultiSelect:=False) 
 
    workbookFilePath1 = Dir(fileNamePath1) 
 
    'TextBox1.Text = workbookFilePath1 
 
    TextBox1.Value = fileNamePath1 
 
    
 
    fileNamePath2 = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls), *.xls", Title:="Open Workbook 2", MultiSelect:=False) 
 
    workbookFilePath2 = Dir(fileNamePath2) 
 
    TextBox2.Value = fileNamePath2 
 
    
 
    If fileNamePath1 = False Or fileNamePath2 = False Then 
 
     MsgBox ("File selection was canceled.") 
 
     Exit Function 
 
    End If 
 
    
 
End If 
 

 
exit_: 
 
End Function

到這裏,代碼是好的...可以做得更好,但是 這裏的地方出現問題......我想的目錄作爲對象傳遞到模塊差異比較

按鈕執行模塊DIFF:

Private Sub CommandButton1_Click() 
 
    getTheWorkbooksToCompare(fileNamePath1, fileNamePath2) 
 
End Sub

我知道,我已經改變myPath1和myPath2到工作簿,在那裏我有他們作爲字符串

版本比較模塊

Public Sub gettheWorkbooksToCompare(myPath1 As Workbook, myPath2 As Workbook) 
 
Dim myExcelObj 
 
Dim WorkbookObj1 
 
Dim WorkbookObj2 
 
Dim WorksheetObj1 
 
Dim WorksheetObj2 
 

 
Dim file1 As String 
 
Dim file2 As String 
 
Dim myWorksheetCounter As Integer 
 
Dim i As Worksheet 
 

 
Set myExcelObj = CreateObject("Excel.Application") 
 
myExcelObj.Visible = True 
 

 
Set file1 = Dir(myPath1) 
 
Set file2 = Dir(myPath2) 
 

 
Set WorkbookObj1 = myExcelObj.Workbooks.Open(file1) 
 
Set WorkbookObj2 = myExcelObj.Workbooks.Open(file2) 
 
Set NewWorkbook = myExcelObj.Workbooks.Add 
 

 
While WorkbookObj1 <> Null And WorkbookObj2 <> Null 
 
'While WorkbookObj1.ActiveWorkbook.Worksheets.count = WorkbookOjb2.ActiveWorkbook.Worksheets.count 
 
    myWorksheetCounter = ActiveWorkbook.Worksheets.count 
 
    myWorksheetCount = ActiveWorkbook.Worksheets.count 
 
    If WorksheetObj1.Worksheets.myWorksheetCounter = WorkbookObj2.Worksheets.myWorksheetCounter Then 
 
     Set WorksheetObj1 = WorkbookObj1.Worksheets(myWorksheetCounter) 
 
     Set WorksheetObj2 = WorkbookObj2.Worksheets(myWorksheetCounter) 
 
     Set myNewWorksheetObj = NewWorkbook.Worksheets(myWorksheetCounter) 
 

 
     For myWorksheetCounter = i To WorksheetObj1 
 
      For myWorksheetCount = j To WorksheetOjb2 
 
       'If cell.Value myWorksheetObj2.Range(cell.Address).Value Then 
 
       If cell.Value = myWorksheetObj2.Range(cell.address).Value Then 
 
        myNewWorksheetObj.Range(cell.address).Value = cell.address.Value 
 
        myNewWorksheetObj.Range(cell.address).Interior.ColorIndex = 3 
 
       Else 
 
        cell.Interior.ColorIndex = 0 
 
       End If 
 
      Next 
 
        
 
      'if doesn't work... use SaveChanges = True 
 
      myNewWorksheetObj.Workbooks.Save() = True 
 
        
 
     Next 
 
    Else 
 
     MsgBox ("The worksheets are not the same worksheets." & vbNewLine & "Please try again.") 
 
    End If 
 
Wend 
 

 
Set myExcelObj = Nothing 
 
    
 
End Sub

所以我的問題是...有人可以幫助看到我要去哪裏錯了嗎?本質上,我有一些問題試圖得到這個工作。 非常感謝

我已經通過並清理了一些區域...但現在有一個:「運行時錯誤'438':對象不支持此propety或方法」在while循環我已經與

+0

單擊CommandButton1時是否發生任何事情? 你能發佈你收到的錯誤嗎?或者您嘗試運行它的過程中發生了什麼? – peege 2014-11-07 06:37:22

回答

0

更新後的代碼,我看到一個錯字上CommandButton1_Click

Private Sub CommandButton1_Click() 
    getTheWorkbooksToCompare(fileNamePath1, fileNamePath2) 
End Sub 


Public Sub gettheWorkbooksToCompare(myPath1 As Workbook, myPath2 As Workbook) 

可能有更多的東西,但你不能在getThe資本的「T」,但你怎麼稱呼它的方式。

+0

嗨,謝謝你......我添加了「The」這個部分來試試,並且很詳細,所以anayone可以看到我的思路......我也加倍檢查過。 :)仍然得到一個錯誤:「預期的函數或變量」CommandButton1_Click()爲getTheWorkbooksToCompare – user4225056 2014-11-07 14:13:26

+0

另外,如果我更改按鈕中的代碼爲:'Dim t1 As msforms.textbox Dim t2 As msforms.txtbox Call getTheWorkbooksToCompare (t1,t2)'我在getTheWorkbooksToCompare模塊內部出現了一個錯誤,其中'Set file1 ='突出顯示,並且錯誤顯示爲:object required – user4225056 2014-11-07 15:01:13

+0

OK。我會再看一次。錯誤消息提供了更好的線索。 – peege 2014-11-07 20:01:55