• ベストアンサー

VBAについて

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))の値を表示 させたいのですが、どのようにしたらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

どんな事を実現されたいのか良く理解出来ませんが、、、 こんな意味でしょか? 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

gazo
質問者

お礼

お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

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

gazo
質問者

お礼

お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

下記で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を押して複数ブロックの範囲指定した場合もうまくいくかどうか 煮詰めてないですが。

gazo
質問者

お礼

お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A