|
▼りん さん:
お返事ありがとうございます。これで試してみます。
私事で大変恐縮なのですが、私はいま中国で働いていまして、現在中国のパソコンで仕事をしています。出来ればでよろしいので、Excelの画面の「どこをクリックしたらどんな画面がでて、そこでどのように設定をする」等の簡単な説明が欲しいです(分かりますか?)。今使っているのは、Excel2003です。システムは日本も中国のも変わりません。また、列番号は固定です。
度々で申し訳ないのですが、是非宜しくお願いいたします。
>素人じゅうすけ さん、こんばんわ。
>
>>どのようなことかといいますと、「指定した日付のある数字から指定した日付のある数字をひいて(計算式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
|
|