| 
    
     |  | >ループはこんなのでいけると思います。 >
 > Dim i As Long
 > For i = UCase(Asc("l")) To UCase(Asc("q")) ' 小さい方を先に書く
 >  Totals (Chr(i))
 >
 AAとかになると
 このループ問題があるので
 こっちに修正します
 
 列を番号で考えなくていいので楽にかけると思います。
 
 Private Sub CommandButton1_Click()
 Dim i As Long
 ' For i = Range("l1").Column To Range("q1").Column
 For i = StrToColNum("l") To StrToColNum("q")
 Totals (ColNumToStr(i))
 ' MsgBox ColNumToStr(i)
 Next
 End Sub
 
 下の関数を定義しておくと
 列の文字だけほしいときに便利です。
 
 Public Function ColNumToStr(ByVal Value As Long) As String
 ' 数字を入れると 列の文字を返す
 ' 1 なら A が返ってきます
 ColNumToStr = Replace(Cells(1, Value).Address(0, 0), "1", "")
 End Function
 
 Public Function StrToColNum(ByVal Value As String) As Long
 ' aとかbとかいれると  列数を返す。
 ' a なら 1 が返ってきます
 StrToColNum = Range(Value & 1).Column
 End Function
 
 
 |  |