0

特定のテキストを含む行数を数え、値を電子メールに出力する割り当てがあります。

Public Function First()
    Dim Source As Workbook
    Dim Var1 As Integer
    Dim Var10 As Integer
    Dim Source2 As Workbook

    Set Source = Workbooks.Open("C:\Users\HP\Desktop\IN INPROG.xlsx")

    Var1 = Application.WorksheetFunction.CountIf(Range("M1:M100"), "Orange")

    Source.Close SaveChanges:=False

    Set Source2 = Workbooks.Open("C:\Users\HP\Desktop\SR INPROG.xlsx")

    Var10 = Application.WorksheetFunction.CountIf(Range("M1:M100"), "Orange")

    Source2.Close SaveChanges:=False

    eTo = "orange@aod.au"
    esubject = Format(Date, "d/mmmm/yyyy") & " " & "Weekly Open Incident Reminder"
    ebody = "Dear All," & vbCrLf & "" & vbCrLf & "" & vbCrLf & "Orange: " & "SR: " & Var10 & " IN: " & Var1 

    Set app = CreateObject("Outlook.Application")
    Set itm = app.createitem(0)
    On Error Resume Next
    With itm
        .Subject = esubject
        .To = eTo
        .body = ebody
        .display

「オレンジ」が行の 1 つに存在する場合でも、私のコードはすべての値を「0」として返します。

4

3 に答える 3

0

あなたの解決策をありがとう、私は私の質問に対する答えを見つけたので、ここに投稿します

Set Source = Workbooks.Open("C:\Users\itsm-student\Downloads\IN INPROG.xlsx")
Set Wks = Source.Worksheets("IN INPROG")

Var1 = Application.WorksheetFunction.CountIf(Wks.Range("M1:M100"), "*Orange*")

私がする必要があるのは、基本的に、参照するワークシートの変数を設定することです。私の場合、それは「IN PROG」になり、範囲を宣言しながら変数を呼び出します。そして、私が一番上に投稿したコードは正しいですが、ソースExcelシートでテキスト「オレンジ」を見る代わりに、VBAを実行するExcelファイルのテキスト値を見つけます。それが役に立てば幸い

于 2013-08-30T16:40:24.193 に答える
0

やった:

Sub Worksheet_Change(ByVal Target As Range)

Set Source = ThisWorkbook

Dim Var1 As Integer

Set Wks = Source.Worksheets("Recebimento")

Var1 = Application.WorksheetFunction.CountIf(Wks.Range("U:U"), "*NOK*")

If Var1 > 0 Then
 'your code

End sub
于 2015-09-08T21:06:36.190 に答える
0

文字列内の単語を含む行をカウントする必要がある場合は、countif 関数の文字列を "Orange" から"*Orange*".

* ワイルドカードは、任意の数の文字を表します。たとえば、「Three orange balloons」という文字列のセルはカウントされません。

CountIf(Range("M1:M100"), "Orange")までになりますCountIf(Range("M1:M100"), "*Orange*")

于 2013-08-18T23:42:18.407 に答える