VBA COUNTA Userform - PullRequest
       15

VBA COUNTA Userform

0 голосов
/ 23 февраля 2019

У меня есть пользовательская форма с несколькими текстовыми полями и командная кнопка.Когда информация вводится и отправляется, информация переносится в первую пустую строку.

Мне нужен код, который будет counta() текст в 4 столбцах в этой строке.Поэтому переведите =IF(IsBlank($A2),"",COUNTA(E2:H2) в код VBA для расчета после того, как пользователь отправил информацию.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

enter image description here

Option Explicit

Sub test()
    Debug.Print "Var 1 : "; CountRangeIf("not(A3="""")", Range("E3:H3"))

    Dim testCriteria As Boolean
    testCriteria = Not (Range("A3").Value = "")
    Debug.Print "Var 2 : "; CountRangeIf_Var2(testCriteria, Range("E3:H3"))
End Sub

Public Function CountRangeIf(IfCriteriaString As String, CountRange As Range) As Variant
    Dim resultCriteria As Boolean
    CountRangeIf = ""           ' Result = "" if Criteria is false
    resultCriteria = Evaluate(IfCriteriaString)
    With Application.WorksheetFunction
        If resultCriteria Then
            CountRangeIf = .CountA(CountRange)
        End If
    End With
End Function

Public Function CountRangeIf_Var2(IfCriteria As Boolean, CountRange As Range) As Variant
    CountRangeIf_Var2 = ""           ' Result = "" if Criteria is false
    With Application.WorksheetFunction
        If IfCriteria Then
            CountRangeIf_Var2 = .CountA(CountRange)
        End If
    End With
End Function
0 голосов
/ 23 февраля 2019

Предполагается, что мы используем Sheet1 и предполагаем, что ваш Row # уже сохранен в переменной ThisRowNum

Следующее должно быть близко к тому, что вы просили

    If Trim(CStr(Sheets("Sheet1").Range("A" & ThisRowNum).Value)) = "" then
       xCtr = 0  ' Your formula used a null string - you can fix this
    else
       xCtr = WorksheetFunction.CountA(Sheets("Sheet1").Range("E" & ThisRowNum &":H" & ThisRowNum))
    endif

Переменная xCtr является результатом

...