引用:
sh.rangeA、sh.rangeB は Range型
sh
.rangeA
「.」は、左側のオブジェクトの メソッド または メンバー を指定する時に使います。
Dim sh As Worksheet
Dim rangeA As Range
Set sh = Worksheets("Sheet1")
Set rangeA = sh.Range("A1:A10")
の様に、別々に オブジェクト変数として定義し 参照しているなら
sh.rangeA は メソッドまたはメンバーが見つからない とエラーになります。
でも、今回は実行できている様なので、sh の中に、rangeA のメンバーがある事になります。
sh が ワークシートオブジェクト であれば
「数式」-「名前の管理」で確認できる 名前を定義したセル範囲と言う事でしょうか?
とりあえず、
n=〜〜 の直前に
Debug.Print sh.rangeA.Address
Debug.Print textA
Debug.Print sh.rangeB.Address
Debug.Print textB.Address
n = Application.WorksheetFunction.CountIfs(sh.rangeA, textA, sh.rangeB, textB)
とでもして、各変数の中身をイミディエイトウィンドに吐き出させ
それらを、実際のExcelのセルに、=COUNTIFS関数の引数として設定し、
希望通りの値が得られるか確認しましょう。