出産前後の痔にはご注意!

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
UserForm1.TextBox1.Text = Selection.Count ・・・(1)
End Sub
***************************************************************

ワークシートで選択されたセルの個数を上のようにして、TextBox1に表示させています。
そこで、例えば
1.
Sheet1.Range(Cells(8, X), Cells(8, Y))が選択された場合、
 ・(1)によって、TextBox1に「Y-X+1」を表示
 ・TextBox2に、Sheet1.Cells(4, X) & Cells(4, Y))の値を表示

2.
Sheet1.Range(Cells(10, X), Cells(10, Y))が選択された場合、
 ・(1)によって、TextBox1に「Y-X+1」を表示
 ・TextBox2に、Sheet1.Cells(4, X) & Cells(4, Y))の値を表示

させたいのですが、どのようにしたらよいのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (3件)

どんな事を実現されたいのか良く理解出来ませんが、、、


こんな意味でしょか?

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Y As Integer, X As Integer
With Selection
 If .Areas.Count = 1 Then
   Y = .Cells(1, .Columns.Count).Column
   X = .Cells(1, 1).Column
   UserForm1.TextBox1.Value = Y - X + 1
   'UserForm1.TextBox1.Value = .Columns.Count '←でも Y-X+1と同じ?
   UserForm1.TextBox2.Text = ""
   For i = X To Y
    UserForm1.TextBox2.Text = _
    UserForm1.TextBox2.Text & Sheet1.Cells(4, i).Text
   Next i
 End If
End With
End Sub
    • good
    • 0
この回答へのお礼

お返事が大変遅くなり、すみませんでした。

無事解決することができました。

本当にありがとうございました。

お礼日時:2006/01/29 21:15

こんにちは。


ちょっと見せていただきましたが、どことなく、考え方が釈然としてきませんね。
たぶん、コードを出されても、その前に状況の説明が不足しているからだと思います。このイベント・ドリブン型マクロは、Sheet1 にはないものなのでしょうか?

でも、
>Sheet1.Cells(4, X) & Cells(4, Y))の値を表示

これって何でしょうか?
Sheet1.Cells(4,X) と、イベントのあるシートの Cells(4,Y)なのでしょうか?常識的に、両方とも、TextBox に表示するデータは、Sheet1にあるものとします。

'-------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If UserForm1 Is Nothing Then Exit Sub
  UserForm1.TextBox1.Text = ""
  UserForm1.TextBox2.Text = ""
  With Target
  If .Count = 1 Then Exit Sub
  If Not (.Row = 8 Or .Row = 10) Then Exit Sub
   UserForm1.TextBox1.Text = CStr(.Columns.Count)
   UserForm1.TextBox2.Text = _
   Sheet1.Cells(4, .Cells(1, 1).Column).Text & Sheet1.Cells(4, .Cells(.Count).Column).Text
  '一応、プロパティは、Text にしておきます。
  End With
End Sub
'-------------------------------------
    • good
    • 0
この回答へのお礼

お返事が大変遅くなり、すみませんでした。

無事解決することができました。

本当にありがとうございました。

お礼日時:2006/01/29 21:16

下記でY-X+1、X、Yが捕らえられると思いますが。


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Selection.Count
MsgBox Selection.Columns.Count
MsgBox Selection(1).Column
MsgBox Selection(1).Column + Selection.Columns.Count - 1
End Sub
を参考に。Selectionは範囲指定の
(1行目)Selectionのセルの数
(2)  Selectionの列の数
(3)  Selectionの最左列(第何列)
(4)  Selectionの最右列(第何列) 
CTRLを押して複数ブロックの範囲指定した場合もうまくいくかどうか
煮詰めてないですが。
    • good
    • 0
この回答へのお礼

お返事が大変遅くなり、すみませんでした。

無事解決することができました。

本当にありがとうございました。

お礼日時:2006/01/29 21:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング