2017-06-14 18 views
0

2つのモジュールをExcelシートに組み込み、診断できなかった問題を実行しようとしています。モジュールは独立して動作しますが、どちらもファイルに入っていると、デバッグ時にサブラインが強調表示された状態で、「コンパイルエラー:引数が間違っているか、プロパティが正しくありません」というメッセージが表示されます。私はさらに診断するのに十分ではなく、私はここでいくつかの指針を得ることができると期待していた。追加のVBAモジュールを追加すると、以前に動作していたモジュールを実行するときにコンパイルエラーが発生する

モジュール1 -

Dim fPO As String 
    Dim fDate As Date 
    Dim fPath As String 
    Dim POFile As String 
    Dim Template As String 
    Dim yearfolder As String 
    Dim monthfolder As String 
    Dim newfolderpath As String 
    Dim FileName As String 

Sub CreatePOFile() 
' 
' Creates new file for each PO 
' 

' 


    fPO = Range("C4").Value 
    fDate = Date - 3 'adjust to change date used in file name 
    fPath = "\\Kforce.com\Group\TAMPA\CORP\Strategic Accounts\Strategic Accounts Operations\CLIENT REPORTS\HP\HP Weekly PO Reporting" 'adjust where file is saved 
    Template = ActiveWorkbook.Name 
    monthfolder = Format(fDate, "mm. mmmm YYYY") 
    yearfolder = Format(fDate, "YYYY") 
    newfolderpath = fPath & "\" & yearfolder & "\" & monthfolder 
    FileName = fPO & " Weekly Report as of " & Format(fDate, "yyyymmdd") 

' 
' 
' 

    'Format pivot table header 
    Rows("7:7").Select 
    With Selection 
     .HorizontalAlignment = xlCenter 
    End With 

    'Create new workbook and save individual PO file. Creates new folders if nonexistant 
    Workbooks.Add 

    If Len(Dir(fPath & "\" & yearfolder, vbDirectory)) = 0 Then 
     MkDir fPath & "\" & yearfolder 
    End If 
    If Len(Dir(fPath & "\" & yearfolder & "\" & monthfolder, vbDirectory)) = 0 Then 
     MkDir fPath & "\" & yearfolder & "\" & monthfolder 
    End If 

    ActiveWorkbook.SaveAs FileName:=newfolderpath & "\" & FileName, FileFormat:=51 
    Application.DisplayAlerts = True 

    POFile = ActiveWorkbook.Name 

    'Copy Pivot information to new file 
    Windows(Template).Activate 
    Range("B7").Select 
    ActiveCell.CurrentRegion.Select 
    Selection.SpecialCells(xlCellTypeVisible).Select 
    Selection.Copy 
    Range("A1").Select 

    Windows(POFile).Activate 
    Range("B7").Select 
    ActiveSheet.Paste 

    ActiveSheet.Name = fPO 

    'Formatting PO File and adding information fields 
    Range("B2").Select 
    ActiveCell.FormulaR1C1 = "Weekly PO Report" 
    With Selection.Font 
    .Name = "Calibri Light" 
     .Size = 18 
     .Strikethrough = False 
     .Superscript = False 
     .Subscript = False 
     .OutlineFont = False 
     .Shadow = False 
     .Underline = xlUnderlineStyleNone 
     .ThemeColor = xlThemeColorLight2 
     .TintAndShade = 0 
     .ThemeFont = xlThemeFontMajor 
    End With 

    Range("B4").Value = "PO Number:" 
    Range("B5").Value = "Date Range:" 

    Range("B4:B5").Select 
    With Selection 
     .Interior.Pattern = xlSolid 
     .Interior.PatternColorIndex = xlAutomatic 
     .Interior.ThemeColor = xlThemeColorAccent2 
     .Interior.TintAndShade = 0 
     .Interior.PatternTintAndShade = 0 
     .Font.ThemeColor = xlThemeColorDark1 
     .Font.TintAndShade = 0 
     .HorizontalAlignment = xlCenter 
     .VerticalAlignment = xlBottom 
     .WrapText = False 
     .Orientation = 0 
     .AddIndent = False 
     .IndentLevel = 0 
     .ShrinkToFit = False 
     .ReadingOrder = xlContext 
     .MergeCells = False 
    End With 

    Range("C4").Value = fPO 
    Range("C5").FormulaR1C1 = "=TEXT(MIN(C[-1]),""m/d/yyyy"")&"" - ""&TEXT(MAX(C[-1]),""m/d/yyyy"")" 
    Range("C4:C5").Select 
    With Selection 
     .Interior.Pattern = xlSolid 
     .Interior.PatternColorIndex = xlAutomatic 
     .Interior.ThemeColor = xlThemeColorDark1 
     .Interior.TintAndShade = -0.149998474074526 
     .Interior.PatternTintAndShade = 0 
     .HorizontalAlignment = xlCenter 
    End With 

    Cells.Select 
    Cells.EntireColumn.AutoFit 
    Columns("B:B").Select 
    Selection.ColumnWidth = 15 
    ActiveWindow.DisplayGridlines = False 
    Range("A1").Select 


    'asks if email should be created 
    Dim answer As Integer 

    answer = MsgBox("Would you like to create email?", vbYesNo + vbQuestion, "Email Option") 

    If answer = vbYes Then EmailFile 
    Else 
    End If 

End Sub 

Sub EmailFile() 

    'Creates email with file attached 
    Dim OutApp As Object 
    Dim OutMail As Object 
    Dim MailBody As String 

    Set OutApp = CreateObject("Outlook.Application") 
    Set OutMail = OutApp.CreateItem(0) 

    MailBody = "<p style='font-family:calibri;font-size:11pt'>" & "Hello,<br><br>" & _ 
       "Attached you will find the weekly report for " & fPO & "." & "<br><br>" & _ 
       "If you have any questions or discrepancies, please let me know!<br><br>Regards," & "</p>" 

    On Error Resume Next 
    With OutMail 
     .Display 
     .to = "" 
     .CC = "" 
     .BCC = "" 
     .Subject = FileName 
     .HTMLbody = MailBody & .HTMLbody 
     .Attachments.Add ActiveWorkbook.FullName 

    End With 
    On Error GoTo 0 

    Set OutMail = Nothing 
    Set OutApp = Nothing 

End Sub 

新しいファイルや電子メールを作成し、モジュール2 - 使いやすモジュール2では

Sub Format() 
' 
' Removes previous raw data and deletes the blank rows so the table doesn't need to be resized upon copy paste of new data 
' 

    On Error Resume Next 
    Rows("4:" & Rows.Count).ClearContents 
    Range("raw[Last Name]").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 
    Range("A3:Z3").ClearContents 
    Range("A3").Activate 


End Sub 

Sub Refresh() 

If Range("A3") = "" Then 

MsgBox ("Please paste new data before clicking Refresh.") 

Else 
    ActiveWorkbook.RefreshAll 
End If 

End Sub 
+0

モジュール2では「キーワードが見つかりません」と戻ってくる必要があります、 'Sub Format()'はモジュール1で使われている組み込み関数を上書きします( 'monthfolder = Format(fDate、" mm)。 "Sub Format1()"に名前を変更し、必要に応じてコードを更新してください。 –

+0

すごくうれしいことを研究しようと4時間かけて過ごしました。ここでの教訓は、関数名をsubの名前にしないことです。 – dougiek

答えて

0

のためのフォーマットの生データタブ、Sub Format()はで使用される組み込み関数を上書きへのモジュールの1

(monthfolder = Format(fDate, "mm. mmmm YYYY")) 

名前の変更との競合を決定するために

簡単な方法を必要としてコードを更新は、ヘルプモジュールを有効にするにはF1キーを押すと、関数名の内側をクリックすることです - それは

関連する問題