編集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
「With .Cells(5、1)」とは何ですか?前の 'With 'はあなたのコードで何をしていますか?そうでなければ、With Sheets( "Sheet1")を使用すると、例えば、セル(5、1) 'は正常に動作します。 –
フルチェーンは ' ActiveWorkbookの場合 .ActiveSheet With .Cells ) ' –
私はあなたがコードに意図しない変更を加えていないと懐疑的です。コンパイルエラーは動的に変更されません。より多くの文脈を与えたら助けになるでしょう。その答えは、あなたが示していないコードであることは間違いありません。 –