| 
    
     |  | 素人じゅうすけ さん、こんばんわ。 
 >どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式1・2=指定した日付のなかに引かせあいたいものが二つ)、その出た二つの数字を使って割り算(計算式3)をして答えを出す。というものです。
 
 列番号は固定でいいのですか?
 それとも、セレクトした列番号も有効なのでしょうか?
 行を二つ選択した場合、選択順に計算するのか、行番号の小さい順に計算するのかどっちでしょうか?
 
 >例で言いますと、指定した日付が5行目と8行目だとします。8行目のF列の数字を5行目のF列の数字で引き、また8行目のH列の数字を5行目のH列の数字で引きます。そして、出た二つの数字を使って割り算(例:H列の答え÷F列の答え)をさせて答えを出す。
 
 例をそのままマクロにするとこんな感じです。
 セルの選択には、InputBoxメソッドを使用しています。
 
 Sub test()
 Dim r1 As Range, r2 As Range, rp1 As Long, rp2 As Long
 Dim dt1 As Variant, dt2 As Variant
 On Error Resume Next
 Set r1 = Application.InputBox("1つめをクリック", Type:=8)
 Set r2 = Application.InputBox("2つめをクリック", Type:=8)
 On Error GoTo 0
 If r1 Is Nothing Or r2 Is Nothing Then
 'エラー
 MsgBox "2か所選択してね", vbExclamation, "中断"
 Else
 If r1.Count + r2.Count = 2 Then
 'それぞれのセルの行番号取得
 rp1 = r1.Row: rp2 = r2.Row
 With Application.ActiveSheet
 dt1 = .Cells(rp2, 6).Value - .Cells(rp1, 6).Value
 dt2 = .Cells(rp2, 8).Value - .Cells(rp1, 8).Value
 End With
 '結果
 MsgBox dt2 / dt1, vbInformation, "H / F"
 Else
 'エラー
 MsgBox "R1 : " & r1.Address(False, False) & vbCrLf _
 & "R2 : " & r2.Address(False, False), _
 vbExclamation, "ともに単一セルのみ有効"
 End If
 End If
 End Sub
 
 |  |