2016-11-16 177 views
0

編集2:これは解決されました。私は 'Year'という名前の変数を宣言するのを間違えた...VBAでYear()関数を呼び出すときに予想される配列エラー

私は、私が提供する一連のレポートに著作権を含むようにしようとしています。今年1月にマクロを更新する必要がないように、今年の年を与えるためにYear関数を呼びたいと思っています。問題の私のコードは次のようになります。

With .Cells(5, 1) 
      .Value = Chr(169) & " " & Year(Date) & " NCH Marketing Services, Inc" 
      .Font.Bold = False 
      .Font.Name = "Arial" 
      .Font.Size = 11 
     End With 

私はこのコードを実行すると、私は「:期待アレイコンパイルエラー」エラーメッセージが表示されます。奇妙なことは、私は3回の別々の機会にこのマクロを実行しようとしました。そして、それは第1回または第3回をコンパイルしませんでしたが、2回目はうまくいきました。私はコードを編集していないし、Year関数の構文/使用法をオンラインで見てきたが、なぜこれが時々動作するのか分からない。これをより信頼できる方法で実装できる方法はありますか?

編集:以下は、完全なコードは

ある
Option Explicit 
Sub RGA_Format_Reports() 

Application.ScreenUpdating = False 

Dim Year As Integer 
Dim Quarter As Integer 

Dim FolderPath As String 
Dim FileName As String 
Dim WorkBk As Workbook 

Dim iRows As Integer 
Dim iCols As Integer 

Dim shpTitle As Shape 
Dim shpLogo As Shape 


'Quarter = InputBox("Please enter the quarter number for which the reports are being run.") 

'Year = InputBox("Please enter the year for which the reports are being run.") 

'FolderPath = "G:\Analytical Services\Internal Client Requests\NRS\Scheduled\" & Year & "\Quarterly RGA Store Alert Reports\" & Year & " Q" & Quarter & "\" 

'FolderPath = "G:\Analytical Services\General Team Folders\Kyle\Macro Tests\RGA Reports\" 

'FileName = Dir(FolderPath & "*.xl*") 

'DoWhile FileName <> "" 

    'Set WorkBk = Workbooks.Open(FolderPath & FileName) 
     'With WorkBk 

With ActiveWorkbook 

     With .ActiveSheet 

      iRows = .UsedRange.Rows.Count 
      iCols = .UsedRange.Columns.Count 

      .Rows.AutoFit 
      .Columns.AutoFit 

      .Columns(1).ColumnWidth = 30 


      ActiveWindow.FreezePanes = False 
      .Range("A9").Select 
      ActiveWindow.FreezePanes = True 

      With .Range(.Cells(iRows - 2, 1), .Cells(iRows, 1)) 
       .WrapText = False 
       .Font.Name = "Arial" 
       .Font.Size = 10 
      End With 


      With .PageSetup 
       .TopMargin = Application.InchesToPoints(0.25) 
       .BottomMargin = Application.InchesToPoints(0.25) 
       .LeftMargin = Application.InchesToPoints(0.25) 
       .RightMargin = Application.InchesToPoints(0.25) 
       .CenterHorizontally = True 
       .Zoom = False 
       .Orientation = xlLandscape 
       .FitToPagesWide = 1 
       .FitToPagesTall = False 
       .PrintTitleRows = "$1:$8" 
      End With 


      .Range(.Cells(9, 3), .Cells(iRows, 3)).HorizontalAlignment = xlRight 
      .Range(.Cells(iRows - 4, 1), .Cells(iRows - 4, iCols)).Font.Bold = True 
      .Range(.Cells(iRows - 4, 1), .Cells(iRows - 4, iCols)).Interior.Color = RGB(238, 236, 225) 


      With .Range(.Cells(7, 9), .Cells(7, 12)) 
       .Merge 
       .HorizontalAlignment = xlCenter 
       .Font.Bold = True 
       .Font.Name = "Arial" 
       .Font.Size = 10 
       .Interior.Color = RGB(238, 236, 225) 

       With .Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       .Value = "Total Billed" 
      End With 


      With .Range(.Cells(7, 13), .Cells(7, 19)) 
       .Merge 
       .HorizontalAlignment = xlCenter 
       .Font.Bold = True 
       .Font.Name = "Arial" 
       .Font.Size = 10 
       .Interior.Color = RGB(238, 236, 225) 

       With .Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       .Value = "Total Adjustments" 
      End With 


      With .Range(.Cells(8, 1), .Cells(iRows - 4, 8)) 
       With .Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 
      End With 


      With .Range(.Cells(7, 9), .Cells(iRows - 4, 12)) 
       With .Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 
      End With 


      With .Range(.Cells(7, 13), .Cells(iRows - 4, 19)) 
       With .Borders(xlEdgeTop) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeBottom) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeLeft) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

       With .Borders(xlEdgeRight) 
        .LineStyle = xlContinuous 
        .Weight = xlThick 
       End With 

      End With 

      If .Cells(9, 4) = 0 Then 
       Columns("D:E").Delete 
      End If 

      For iRows = 1 To 4 
       .Cells(iRows, 1).Font.Bold = True 
       .Cells(iRows, 1).Font.Name = "Arial" 
       If iRows = 1 Then 
        .Cells(iRows, 1).Font.Size = 14 
       Else 
        .Cells(iRows, 1).Font.Size = 12 
       End If 
      Next iRows 

      With .Cells(5, 1) 
       .Value = Chr(169) & " " & Year(Date) & " NCH Marketing Services, Inc" 
       .Font.Bold = False 
       .Font.Name = "Arial" 
       .Font.Size = 11 
      End With 

      .Columns("A").ColumnWidth = 200 

      .Range(Cells(1, 1), Cells(5, 1)).WrapText = False 

      .Range(Cells(1, 1), Cells(5, 1)).Copy 
      .Range("B1").Select 
      Application.Wait (Now + TimeValue("00:00:01")) 
      .Pictures.Paste.Select 
      .Range(Cells(1, 1), Cells(5, 1)).ClearContents 
      .Columns("A").AutoFit 
      .Range("A1").Select 

      Set shpTitle = .Shapes("Picture 1") 
      With shpTitle 
       .Name = "Title Picture" 
       .Placement = xlFreeFloating 
      End With 

      Set shpLogo = .Shapes.AddPicture("G:\Analytical Services\AS Tools\AS Templates\NCH Logo.png", False, True, 1, 1, 60, 67) 
      With shpLogo 
       .Name = "Logo Picture" 
       .Placement = xlFreeFloating 
      End With 

      With shpTitle 
       .Left = 67 
      End With 


      .Columns("A").ColumnWidth = 30 



     End With 

End With 


End Sub 
+0

「With .Cells(5、1)」とは何ですか?前の 'With 'はあなたのコードで何をしていますか?そうでなければ、With Sheets( "Sheet1")を使用すると、例えば、セル(5、1) 'は正常に動作します。 –

+0

フルチェーンは ' ActiveWorkbookの場合 .ActiveSheet With .Cells ) ' –

+0

私はあなたがコードに意図しない変更を加えていないと懐疑的です。コンパイルエラーは動的に変更されません。より多くの文脈を与えたら助けになるでしょう。その答えは、あなたが示していないコードであることは間違いありません。 –

答えて

1

@ShaiRadoは、私が「年」の名前の変数を設定していたことを指摘しました。私は、関数と同じ名前の変数を宣言することは大きな問題ではないことを認識しています。私はちょうど精神的な遅れがありました。変数の宣言を変更すると私の問題は解決しました。おかげで@ ShaiRado。

関連する問題