2017-01-09 15 views
0

問題がどこにあるのかを誰かに教えてもらうことができます 各キャリアの値を任意の月末から単純に求めます。 ループ方式は問題ではありません、 はこれが私の関数である:私はすぐに窓の上に私の機能を果たしている場合、私は「= Tmese(のような細胞内の機能を置けば関数は直接ウィンドウ上で実行されますが、セルシート上では実行されません

Function Tmese (c As String, m As Integer) As Integer 'C as Carrier, as m month 
     Dim y As Date, x As Variant 
     y = CDate (1 & "/" & m + 1 & "/" & 2016) - 1 'to have the end of the month add one month to c and I subtract one day 
     With Worksheets (c) 
      Set x = .Columns (1) .Find (y,,, xlWhole) 
      If X Is Nothing Then 
       Tmese = .Cells (x.Row, 5) 'found max dates into a month to retreive corrispondence fair 
      else 
       Exit Function 'not found 
      end If 
     end With 
end Function 

結果は、即時のですが、 GLS "; 2)何も起こらない なぜ? ??

+1

あなたはどちらかのイミディエイトウィンドウで何かを得るべきではない - そのコードはコンパイルすらしません。 – Comintern

+0

私は次のように置いています。関数debug:Print Tmese( "GLS"、2)と私は正しい1308を探します。 – Fabrizio

+0

'X' Nothing ... 'の前に' If'がありません。 –

答えて

1

上記のコメントのほとんどにフォローアップ:あなたはFindIf Not x Is Nothing Thenを使用して成功していることを確認する必要があり

  1. を使用して、mの月末を見つけることができます。

機能Tmeseコード

Function Tmese(c As String, m As Integer) As Integer ' C as Carrier, as m month 

    Dim y As Date, x As Variant 

    y = WorksheetFunction.EoMonth(CDate("1/" & m & "/2016"), 0) ' find add of the month of m 
    With Worksheets(c) 
     Set x = .Columns(1).Find(What:=CStr(y)) 
     If Not x Is Nothing Then 
      Tmese = .Cells(x.Row, 5) ' found max dates into a month to retreive corrispondence fair 
     Else 
      Exit Function 'not found 
     End If 
    End With 

End Function 

GLSワークシートのデータ別の仕事に適用する方法

enter image description here

シート

enter image description here

+1

そう、CStr(式)は分解能があったので、私は自分のやり方を照らし出すように文字列形式を(セルからセルに手動で)テストしようとしました。感謝 – Fabrizio

関連する問題