うまくいかないの意味が、思った通りの数値が出ないのか、それともエラーになるのかによって対策が変わってきますので、もう少し詳しく書かれると良いと思いますが、それはさておきエラーになる場合の一般的な調査方法です。
掲載いただいたコードのままでは文字列の組み立てで失敗しているのかcolllastやrowlastが取れていないのか判別できないので、以下のように、条件指定部をR1~R3までの変数に格納し、その値が思ったとおりかどうか確認してみてください。
Debug.Printの使い方がよくわからない場合はMsgBoxへの出力でも構いません。
あるいはBreakPointを設定してデバッグモードで値を確認するなど。
lang
1Sub Sample()
2 Dim collast As Long: collast = Cells(1, Columns.Count).End(xlToLeft).Column
3 Dim rowlast As Long: rowlast = Cells(Rows.Count, 1).End(xlUp).Row
4 Dim a As Long: a = collast + 2
5
6 Dim R1 As String, R2 As String, R3 As String
7 R1 = "$BO$1" & ":" & "$BO$" & rowlast & ""
8 R2 = "$BG$1" & ":" & "$BM$" & rowlast & ""
9 R3 = "" & a & "1"
10
11 Debug.Print R1
12 Debug.Print R2
13 Debug.Print R3
14
15 Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range(R1), _
16 ActiveSheet.Range(R2), True, True, , ActiveSheet.Range(R3), _
17 True, False, False, False, , False
18End Sub
aとcollastが怪しいですね。
Columnは数値ですので、aはそれに2を足したもので、最後のR3は数値に文字列の1を足してます。
たとえば、BO列が最終ならcollastは67、それに2を足してaは69、69に文字列として1を足して、R3は"691"です。
Range("671")ってなるので、そこが原因じゃないかと。
ちなみに私の環境で類似のマクロを作ってみましたところ、問題なく表示されたようです。
【データ】(B3:C9)
平均気温 糖度
20 7.23
22 5.83
24 4.44
26 3.04
28 1.65
30 0.25
【コード】
lang
1Sub Macro2()
2 Dim R1 As String, R2 As String, R3 As String
3 R1 = "$C$3:$C$9"
4 R2 = "$B$3:$B$9"
5 R3 = "$E$13"
6
7 Debug.Print R1
8 Debug.Print R2
9 Debug.Print R3
10
11 Application.Run "ATPVBAEN.XLAM!Regress", ActiveSheet.Range(R1), _
12 ActiveSheet.Range(R2), True, True, , ActiveSheet.Range(R3) _
13 , True, False, False, False, , False
14End Sub
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。