|
素人じゅうすけ さん、こんばんわ。
>どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式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
|
|