2017-10-16 18 views
0

Application.CountIf()をExcelマクロで使用しようとしていますが、カウントが返されません。数値として0を返します。Excel VBA Application.CountIf()は他のマクロと同じように動作しません

Application.CountIf()を別のマクロで何回か使用したので、この混乱があります。他のマクロから

の作業コード:新しいマクロの

Sub newer_COA() 
    Sheets("BATCH NUMBERS").Select 

    'Count total of column CO 
    count = Application.CountIf(Columns(93), "1") 
End Sub 

コード - sum_litres()

Sub sum_litres() 
    Workbooks("Small Fill.xlsm").Activate 
    Sheets("Small Fill").Select 

    'Count total Machine one entries in column F 
    Dim Machine_one_count As Integer 
    Machine_one_count = Application.CountIf(Columns(6), "1") 

    Workbooks("Small Fill Analysis.xlsm").Activate 
    Sheets("Sheet1").Select 

    Msg = Machine_one_count & " Number of entries from Machine one" 
    MsgBox Prompt:=Msg 
End Sub 

新しいマクロからの出力 - sum_litres()

0 Number of entries from Machine one 

この新しいマクロsum_litres()は、Small Fill Analysisと呼ばれる別のシートに作成され、Small Fill.xlsmというデータが表示されます。 sum_litres()の先頭では、以下の関数を使用してシートSmall Fill.xlsmが開いているかどうかを確認し、シートがまだ開いていない場合は正常に開きます。このコードが正常に動作するので、私は上記の質問にそれを含めませんでした。

'Calls function IsWorkBookOpen() to check if the required spreadsheet is open 
Ret = IsWorkBookOpen("Small Fill.xlsm") 

If Ret = True Then 
    Workbooks("Small Fill.xlsm").Activate 
    Sheets("Small Fill").Select 
Else 
    'Open required spreadsheet 
    Workbooks.Open FileName:="Small Fill.xlsm", ReadOnly:=True 
    Sheets("Small Fill").Select 
End If 


Function IsWorkBookOpen(ByVal FileName As String) As Boolean 
    Dim TargetWorkbook As Workbook 

    Dim IteratorWorkbook As Workbook 
    For Each IteratorWorkbook In Application.Workbooks 
     If IteratorWorkbook.FullName = FileName Then 
      Set TargetWorkbook = IteratorWorkbook 
     End If 
    Next 

    If Not TargetWorkbook Is Nothing Then 
     If TargetWorkbook.ReadOnly Then 
      IsWorkBookOpen = True 
      Exit Function 
     End If 
    End If 
End Function 

ご意見ありがとうございました!

+0

あなたはシート「小塗りつぶしの列6で確認してください任意の行です"は" 1 "の値を持っていますか?また、テキストまたは数値として書式設定されたサンプルの列はありますか? – Moacir

+0

これがCountIfの問題に関連しているかどうかはわかりませんが、IsWorkbookOpen関数はFileNameとIteratorWorkbook.FullName(フルパスを指定しています)を比較しているので、フルパスアドレスを要求しています。 IsWorkbookOpen( "Small Fill.xlsm")として呼び出すと、常にfalseが返されます。 –

+0

Thanks @Moacirシート「Small Fill」のColumn 6(F)には値 "1"の2つがあります。使用されているサンプルの列は、「一般」としてフォーマットされ、値はドロップダウンから選択されます。私は小さな小包でデータのフォーマットを知らなかったので、これは私のシートではないので、シートの小文字列をチェックして、小文字の列6も「一般」としてフォーマットされていますが、値はドロップダウンから選択されていません。この情報は理にかなっていますか? –

答えて

0

私は問題はマクロの場所である疑いがあるが、解決策は、物事を選択しますが、直接の範囲を参照していないだけで、以下のとおりです。

Sub sum_litres() 
    'Count total Machine one entries in column F 
    Dim Machine_one_count As Integer 
    Machine_one_count = Application.CountIf(Workbooks("Small Fill.xlsm").Sheets("Small Fill").Columns(6), "1") 

    Msg = Machine_one_count & " Number of entries from Machine one" 
    MsgBox Prompt:=Msg 
End Sub 
関連する問題