title: Compile error: Argument not optional when calling sub
body: <p>So, while I have read some of the many questions on here about similar errors, I haven't found one which helped me understand my problem, so far. If their is a similar question with an appropriate answer, please link it and I shall remove this one.</p>
  
  <p>Now, I am using a small sub <code>Refresh_Activesheet()</code> to look at the name of the WorkSheets and according to that name run the appropriate sub. Most of the subs are in the same module as <code>Refresh_Activesheet()</code>. However, two are in their separate module, for the moment. Now the problem is that when I run <code>Refresh_Activesheet</code> vba returns the argument not optional error and I can't fathom why.</p>
  
  <p><code>Refresh_Activesheet</code></p>
  
  <pre><code>Sub Refresh_Activesheet()
  
      If IsNumeric(Left(ActiveSheet.Name, 1)) Then
          Emissions_Calculation
      ElseIf ActiveSheet.Name = "Voyages List" Then
          Refresh_Table
      ElseIf ActiveSheet.Name = "Émission Total" Then
          Call Refresh_Emissions.Emission_Total
      ElseIf ActiveSheet.Name = "Consommation Total" Then
      Exit Sub
  End If
  
  End Sub
  </code></pre>
  
  <p><code>Refresh_Emissions</code> which is the module that contains <code>Emission_Total</code></p>
  
  <pre><code>Option Explicit
  Option Base 1
  
  Public j, i, k, n, m, p, l, info, mation, Total As Variant
  Public AverageEmission, TotalEmission As String
  
  Sub Emission_Total(ByVal ws As Worksheet)
  
  Application.ScreenUpdating = False
  On Error Resume Next
  
  Dim SoxRevenue, SoxGross, MilesTotal, MilesLaden, CargoMT As Double
  
  ThisWorkbook.Sheets("Émission total").Range("A7 : M200").Clear
  j = 7
  k = 1
  For Each ws In ActiveWorkbook.Sheets
      If IsNumeric(Left(ws.Name, 1)) Then
          ws.Unprotect ("12345")
  
          ThisWorkbook.Sheets("Émission Total").Range("A" &amp; j).Value = ws.Range("C5").Value
          ThisWorkbook.Sheets("Émission Total").Range("B" &amp; j).Value = ws.Range("T2").Value
          ThisWorkbook.Sheets("Émission Total").Range("C" &amp; j).Value = ws.Range("T3").Value
          ThisWorkbook.Sheets("Émission Total").Range("D" &amp; j).Value = ws.Range("G2").Value
          ThisWorkbook.Sheets("Émission Total").Range("E" &amp; j).Value = ws.Range("J2").Value
  
          info = ThisWorkbook.Sheets("Émission total").Range("F7 : M200").Address
          mation = ws.Range("D6:D8").Address
  
          SoxRevenue = WorksheetFunction.Sum(ws.Range("V28:V30").Value)
          SoxGross = ws.Range("V43").Value
          MilesLaden = ws.Range("M4").Value
          MilesTotal = ws.Range("M6").Value
          CargoMT = ws.Range("O5").Value
  
          With ThisWorkbook.Sheets("Émission total").Range(info)
              If (ws.Range(mation).Cells(1, 1).Value) = "" Then
               .Cells(k, 1).Value = ws.Range("W49").Value
               .Cells(k, 2).Value = ws.Range("W50").Value
               .Cells(k, 3).Value = ws.Range("W54").Value
               .Cells(k, 4).Value = ws.Range("W56").Value
               .Cells(k, 5).Value = ws.Range("V43").Value
               .Cells(k, 6).Value = SoxRevenue
               .Cells(k, 7).Value = SoxGross * 1.852 * 1000 * 1000 / (CargoMT * MilesTotal)
               .Cells(k, 8).Value = SoxRevenue * 1.852 * 1000 * 1000 / (CargoMT * MilesLaden)
  
               .Cells(k, 1).NumberFormat = "?0.00"
               .Cells(k, 2).NumberFormat = "?0.00"
               .Cells(k, 3).NumberFormat = "?0.00"
               .Cells(k, 4).NumberFormat = "?0.00"
               .Cells(k, 5).NumberFormat = "?0.0000"
               .Cells(k, 6).NumberFormat = "?0.0000"
               .Cells(k, 7).NumberFormat = "?0.0000"
               .Cells(k, 8).NumberFormat = "?0.0000"
  
              ElseIf (ws.Range(mation).Cells(1, 1).Value) = 0 Then
               .Cells(k, 1).Value = ws.Range("W49").Value
               .Cells(k, 2).Value = ws.Range("W50").Value
               .Cells(k, 3).Value = 0
               .Cells(k, 4).Value = 0
               .Cells(k, 5).Value = ws.Range("V43").Value
               .Cells(k, 6).Value = ws.Range("V43").Value
               .Cells(k, 7).Value = 0
               .Cells(k, 8).Value = 0
  
               .Cells(k, 1).NumberFormat = "?0.00"
               .Cells(k, 2).NumberFormat = "?0.00"
               .Cells(k, 3).NumberFormat = "?0.00"
               .Cells(k, 4).NumberFormat = "?0.00"
               .Cells(k, 5).NumberFormat = "?0.0000"
               .Cells(k, 6).NumberFormat = "?0.0000"
               .Cells(k, 7).NumberFormat = "?0.0000"
               .Cells(k, 8).NumberFormat = "?0.0000"
  
               ElseIf (ws.Range(mation).Cells(2, 1).Value) = 0 And (ws.Range(mation).Cells(3, 1).Value) = 0 Then
               .Cells(k, 1).Value = ws.Range("W49").Value
               .Cells(k, 2).Value = ws.Range("W50").Value
               .Cells(k, 3).Value = (ws.Range("W49").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 4).Value = 0
               .Cells(k, 5).Value = ws.Range("V43").Value
               .Cells(k, 6).Value = ws.Range("V43").Value
               .Cells(k, 7).Value = (ws.Range("V43").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 8).Value = 0
  
               .Cells(k, 1).NumberFormat = "?0.00"
               .Cells(k, 2).NumberFormat = "?0.00"
               .Cells(k, 3).NumberFormat = "?0.00"
               .Cells(k, 4).NumberFormat = "?0.00"
               .Cells(k, 5).NumberFormat = "?0.0000"
               .Cells(k, 6).NumberFormat = "?0.0000"
               .Cells(k, 7).NumberFormat = "?0.0000"
               .Cells(k, 8).NumberFormat = "?0.0000"
  
               ElseIf (ws.Range(mation).Cells(2, 1).Value) = "" And (ws.Range(mation).Cells(3, 1).Value) = "" Then
               .Cells(k, 1).Value = ws.Range("W49").Value
               .Cells(k, 2).Value = ws.Range("W50").Value
               .Cells(k, 3).Value = (ws.Range("W49").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 4).Value = 0
               .Cells(k, 5).Value = ws.Range("V43").Value
               .Cells(k, 6).Value = ws.Range("V43").Value
               .Cells(k, 7).Value = (ws.Range("V43").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 8).Value = 0
  
               .Cells(k, 1).NumberFormat = "?0.00"
               .Cells(k, 2).NumberFormat = "?0.00"
               .Cells(k, 3).NumberFormat = "?0.00"
               .Cells(k, 4).NumberFormat = "?0.00"
               .Cells(k, 5).NumberFormat = "?0.0000"
               .Cells(k, 6).NumberFormat = "?0.0000"
               .Cells(k, 7).NumberFormat = "?0.0000"
               .Cells(k, 8).NumberFormat = "?0.0000"
  
              Else
               .Cells(k, 1).Value = ws.Range("W49").Value
               .Cells(k, 2).Value = ws.Range("W50").Value
               .Cells(k, 3).Value = (ws.Range("W49").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 4).Value = (ws.Range("W50").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 5).Value = ws.Range("V43").Value
               .Cells(k, 6).Value = ws.Range("V43").Value
               .Cells(k, 7).Value = (ws.Range("V43").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value) + (ws.Range(mation).Cells(3, 1).Value))) * 1000 * 1000 / 1.853
               .Cells(k, 8).Value = (ws.Range("V43").Value) / ((ws.Range(mation).Cells(1, 1).Value) * ((ws.Range(mation).Cells(2, 1).Value))) * 1000 * 1000 / 1.853
  
               .Cells(k, 1).NumberFormat = "?0.00"
               .Cells(k, 2).NumberFormat = "?0.00"
               .Cells(k, 3).NumberFormat = "?0.00"
               .Cells(k, 4).NumberFormat = "?0.00"
               .Cells(k, 5).NumberFormat = "?0.0000"
               .Cells(k, 6).NumberFormat = "?0.0000"
               .Cells(k, 7).NumberFormat = "?0.0000"
               .Cells(k, 8).NumberFormat = "?0.0000"
  
              End If
  
           End With
  
          k = k + 1
          j = j + 1
  
          ws.Protect ("12345")
  
      ElseIf ws.Name = "Émission total" Then
          ws.Unprotect ("12345")
  
      End If
  
  Next ws
      k = k + 7
      p = k - 1
  
      ThisWorkbook.Sheets("Émission total").Range("D" &amp; k).Value = "AverageEmission"
      ThisWorkbook.Sheets("Émission total").Range("F" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("F7 : F" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("G" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("G7 : G" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("H" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("H7 : H" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("I" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("I7 : I" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("J" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("J7 : J" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("K" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("K7 : K" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("L" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("L7 : L" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("M" &amp; k).Value = Application.Average(ThisWorkbook.Sheets("Émission total").Range("M7 : M" &amp; p))
  
      ThisWorkbook.Sheets("Émission total").Range("F" &amp; k).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("G" &amp; k).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("H" &amp; k).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("I" &amp; k).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("J" &amp; k).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("K" &amp; k).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("L" &amp; k).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("M" &amp; k).NumberFormat = "?0.0000"
  
      l = k + 2
  
      ThisWorkbook.Sheets("Émission total").Range("D" &amp; l).Value = "TotalEmission"
      ThisWorkbook.Sheets("Émission total").Range("F" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("F7 : F" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("G" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("G7 : G" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("H" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("H7 : H" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("I" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("I7 : I" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("J" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("J7 : J" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("K" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("K7 : K" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("L" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("L7 : L" &amp; p))
      ThisWorkbook.Sheets("Émission total").Range("M" &amp; l).Value = Application.Sum(ThisWorkbook.Sheets("Émission total").Range("M7 : M" &amp; p))
  
      ThisWorkbook.Sheets("Émission total").Range("F" &amp; l).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("G" &amp; l).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("H" &amp; l).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("I" &amp; l).NumberFormat = "?0.00"
      ThisWorkbook.Sheets("Émission total").Range("J" &amp; l).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("K" &amp; l).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("L" &amp; l).NumberFormat = "?0.0000"
      ThisWorkbook.Sheets("Émission total").Range("M" &amp; l).NumberFormat = "?0.0000"
  
  ThisWorkbook.Sheets("Émission Total").Protect ("12345")
  ThisWorkbook.Protect ("12345")
  Application.ScreenUpdating = True
  
  End Sub
  </code></pre>