Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4113 / 13644 ツリー ←次へ | 前へ→

【58137】星取表に関して 困ったさん 08/10/5(日) 20:58 質問[未読]
【58138】Re:星取表に関して ponpon 08/10/5(日) 21:42 発言[未読]
【58179】Re:星取表に関して 困ったさん 08/10/7(火) 18:24 発言[未読]
【58183】Re:星取表に関して ponpon 08/10/8(水) 7:08 発言[未読]
【58369】Re:星取表に関して 困ったさん 08/10/21(火) 18:00 お礼[未読]

【58137】星取表に関して
質問  困ったさん  - 08/10/5(日) 20:58 -

引用なし
パスワード
   以前に星取表のようなソフトを作る際に、質問させていただいたものです。
あれから、色々と改良を重ねるにつれ、分からないことが生じました。
どうぞ、ご教授ください。

1行目と2列目に同じメンバーリストが書かれています。順不同です。

1)4列目に日付が入力されます。
2)(3、6)以降のセルを選択した状態でこのボタンが押されます。
3)そのとき、2行目と3列目に出力します。(入っている値より大きければ)
4)また、A対Bをした際、B対Aに--------を出力します。

このようなプログラムを書いたのですが、
→の時点で、「オブジェクトが必要です。」となるんです。
なぜでしょうか。

Private Sub CommandButton52_Click()

  Dim i As Long
  Dim C As Long
  Dim R As Long

  With Worksheets("Sheet1")
→    If Intersect(Target, Range(.Cells(3, 6), .Cells(3, 53))) Is Nothing Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    .Cells(Target.Row, Target.Column).Value = .Cells(Target.Row, 4).Value
    .Cells(Target.Row, Target.Column).Font.ColorIndex = .Cells(Target.Row, 4).Font.ColorIndex
    If .Cells(Target.Row, Target.Column).Value > .Cells(2, Target.Column).Value Then
      .Cells(2, Target.Column).Value = .Cells(Target.Row, Target.Column).Value
      .Cells(2, Target.Column).Font.ColorIndex = .Cells(Target.Row, Target.Column).Font.ColorIndex
    End If
    If .Cells(Target.Row, Target.Column).Value > .Cells(Target.Row, 3).Value Then
      .Cells(Target.Row, 3).Value = .Cells(Target.Row, Target.Column).Value
      .Cells(Target.Row, 3).Font.ColorIndex = .Cells(Target.Row, Target.Column).Font.ColorIndex
    End If
  
    For i = 6 To 53
      If .Cells(Target.Row, 2).Value = .Cells(1, i).Value Then
        C = i
      End If
    Next
    For i = 3 To 50
      If .Cells(1, Target.Column).Value = .Cells(i, 2).Value Then
        R = i
      End If
    Next
    If .Cells(R, C).Value = "" Then
      .Cells(R, C).Value = "'--------"
      .Cells(R, C).Font.ColorIndex = 1
    End If
  End With
  
End Sub

【58138】Re:星取表に関して
発言  ponpon  - 08/10/5(日) 21:42 -

引用なし
パスワード
   よく見ていませんが、
Targetとは、何でしょう? 
>Intersect(Target, Range(.Cells(3, 6), .Cells(3, 53)))
から、Rangeオブジェクトだと思いますが、定義されていません。だからしかられるのかな?

Set Target = Selection がいるのかな?

【58179】Re:星取表に関して
発言  困ったさん  - 08/10/7(火) 18:24 -

引用なし
パスワード
   ponpon さん、ご回答ありがとうございます。

確かに、ご指摘の通りですね。

Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
のなかで、前に用いたコードをそのまま転用していました。

目的は、このボタンが押された時、アクティブセルが
(3, 6)〜(3, 53)の範囲にある場合にのみ動作させたいんです。
(この範囲にない時には、何もしない)

コードの他の部分でもアクティブセルの行番号や列番号を必要としているのですが、コントロールツールボックス(ボタン)のコードの中で、アクティブセルの行番号、列番号を知るにはどうすれば良いのでしょうか。

【58183】Re:星取表に関して
発言  ponpon  - 08/10/8(水) 7:08 -

引用なし
パスワード
   Dim Target As Range

Set Target = ActiveCell

を追加するとどうでしょう?

【58369】Re:星取表に関して
お礼  困ったさん  - 08/10/21(火) 18:00 -

引用なし
パスワード
   お礼が遅くなり、本当に申し訳ありません。

アドバイスしていただき、プログラムを作成して、
期待通りの結果を得ることができました。

本当に感謝いたします。

4113 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free