- ベストアンサー
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))の値を表示 させたいのですが、どのようにしたらよいのでしょうか?
- gazo
- お礼率30% (74/241)
- Visual Basic
- 回答数3
- ありがとう数3
- みんなの回答 (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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 ちょっと見せていただきましたが、どことなく、考え方が釈然としてきませんね。 たぶん、コードを出されても、その前に状況の説明が不足しているからだと思います。このイベント・ドリブン型マクロは、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 '-------------------------------------
お礼
お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17068)
下記で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を押して複数ブロックの範囲指定した場合もうまくいくかどうか 煮詰めてないですが。
お礼
お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。
関連するQ&A
- Excel VBAについて
Excel VBAにおいて、Sheetの選択した行によって値を表示するUserFormを変更したいと思っています。 現在以下のようにしたのですが、実行すると「SubまたはFunctionが定義されていません」というエラーが表示されます。 「Controls("UserForm" & x).Label1.Caption =」のところをどのようにしたらよいのでしょうか。 Private Sub CommandButton1_Click() If ActiveCell.Row = 5 Then UserForm1.Show x = 1 ElseIf ActiveCell.Row = 6 Then UserForm2.Show x = 2 End If End Sub Private Sub Worksheet_Selection Change(Byval Target As Range) Controls("UserForm" & x).Label1.Caption = ・・・
- ベストアンサー
- Visual Basic
- セルの選択について
<Sheet2のコード> Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not UserForm3.Visible Then UserForm3.Show 0 UserForm3.TextBox1.Text = Selection.Count End Sub *********************************************** <UserForm3のコード> Private Sub CommandButton1_Click() With Selection .MergeCells = True .WrapText = True .Value = TextBox2.Text & ComboBox1.Text End With UserForm3.Hide End Sub ---------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, lastrw2 As Integer, i As Integer lastrw = Sheet3.Range("A1").End(xlDown).Row lastrw2 = Sheet3.Range("B1").End(xlDown).Row If Sheet2.Range(Cells(5, 4), Cells(5, 100)).Select Then ・・・(1) For i = 1 To lastrw - 1 ComboBox1.AddItem Sheet3.Cells(i + 1, 1).Value Next i End If If Sheet2.Range(Cells(6, 4), Cells(6, 100)).Select Then ・・・(2) For i = 1 To lastrw2 - 1 ComboBox1.AddItem Sheet3.Cells(i + 1, 2).Value Next i End If End Sub ************************************************* ワークシート上でマウスで選択されたセルの行ごとにUserForm3のComboBox1で表示させる文字を変えたいのですが、どのようにすればよいのでしょうか。 上の(1)(2)だととマウスで選択されたセルではなく(1)(2)の範囲のセルが結合されてしまいます。。。 また、今はワークシート上でマウスを左クリックする度にUserForm3が表示されてしまいます。 これをワークシート上でマウスでセルを選択して右クリックするとUserForm3が表示される ようにしたりすることは可能なのでしょうか。
- ベストアンサー
- Visual Basic
- エクセルvba (ByVal Target As Range)について
シートのイベントプロシージャーが Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub となりますが (ByVal Target As Range)部分は何なのでしょうか? 何のためにあるのかわかりません。 Private Sub Worksheet_SelectionChange() End Sub としたらエラーが返ってきました。 理由を教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAで最終行の取得について
UserFormのConboBoxで「○○」を選んで、 UserFormのTextBoxで『あいう』と入力すると、ワークシートに A B 1 ○○ ×× 2 あいう と表示され、 UserFormのConboBoxで「××」を選んで、 UserFormのTextBoxで『アイウ』と入力すると A B 1 ○○ ×× 2 あいう アイウ 3 : : と表示されるようにしたいと思います。 以下のプログラムまではできています。 ********************************************* Private Sub UserForm_Initialize() Dim lasClm As Integer, i As Integer lasClm = Sheet1.Range("A1").End(xlToRight).Column For i = 1 To lasClm ComboBox1.AddItem Sheet1.Cells(1, i).Value Next i End Sub ********************************************* Private Sub CommandButton1_Click() Select Case ComboBox1.Text Case Sheet1.Cells(1, 1).Value '「○○」が選択 Sheet1.Cells(2, 1).Value = TextBox1.Text ・・・(1) Case Sheet1.Cells(1, 2).Value '「××」が選択 Sheet1.Cells(2, 2).Value = TextBox1.Text ・・・(2) End Select UserForm1.Hide End Sub ********************************************** 今は(1)、(2)のように直接セルを指定しているのですが、 この部分を各列(A列、B列)の最終行の値を取得して、 最終行+1のセルに順次TextBoxに入力された値を代入していきたいのですが、 どのようにしたらよいのでしょうか。 しかし、A列とB列は同じように値が増えていくとは限りません。 例) A B 1 ○○ ×× 2 あいう アイウ 3 かきく 4 さしす となる場合もあるので、A列とB列それぞれの最終行の値を取得したいと思っています。
- ベストアンサー
- Visual Basic
- シートのイベント VBA
シートをクリックしたらシートをクリアしたいのですが クリックするセルがA1の場合は、マクロを実行させたくないのですが 下記のコードだとエラーになってしまいます。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Target.Range = Range("a1") Then Cells.Clear End If End Sub ”Range("a1")でなければ、Cells.Clearする” にはどうすればいいですか?
- ベストアンサー
- オフィス系ソフト
- VBAについて教えて下さい。
エクセル2003を使用してます。 ("Sheet1")のB列をダブルクリックすると、 ("Sheet2")の("AA100")を表示するようにしたいのですが、 ■の部分がエラーが出て、色々変更して試してるのですが駄目です。 どう言う風に、書けばいいのかわかりません。 どなたか教えて頂けませんか? 下記VBAです。 ──────────────────────────────── Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Cells.Count > 1 Then Exit Sub If Target.Column <> 2 Then Exit Sub Sheets("Sheet2").Activate ■Range("AA100").Select End Sub ──────────────────────────────── よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAについて
エクセルシートで任意に選択されたセルの個数を VBAのUserFormのTextBoxに表示されるのは どのようにしたらよいのでしょうか? 例)エクセルシートで、B2~D2をマウスで選択すると、 UserFormのTextBoxに3と表示されるようにする。 任意に選択されたセルの個数を求めるのは 以下のようにしました↓↓↓ ********************************* * Sub GetAreaValue() * Dim CELLNUM As Integer * CELLNUM = Selection.Count * End Sub *********************************
- ベストアンサー
- Visual Basic
- エクセルVBAについて
エクセルVBAについて range("B5") = 1行の、選択したセルの値 というようなマクロを作成したいと思っています。 というのも、B5セルの値が、1行で選択したセルの値に変化できればと思っています。 ちなみに下のようなコードを書いてみたのですが、うまくいきません orz Private Sub Worksheet_SelectionChange(ByVal Target As Range) Range("B5") = Rows(1).ActiveCell.Value End Sub 初心者で申し訳ありませんが、よい方法がありましたら、 よろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- VBA マクロの削除について教えてください
VBEのWorksheet上にある、下記のコードが消えません。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) End Sub 全選択して、Deleteするのですが、消しても復活しています。 これ以上方法が思いつかないので、ご教示をおねがいします。
- ベストアンサー
- その他(プログラミング・開発)
- ExcelのVBAで法人格を取りたい
エクセルのシート1の1行に1企業の情報があります。 セルを一つ選択し、クリックボタンを押すと、UserForm4がたちあがるコードを入れています。 ------------------------------------ gyo = ActiveCell.Row retu = ActiveCell.Column Cells(gyo, retu).Select UserForm4.TextBox4.Text = Cells(gyo, "w") '法人名 UserForm4.TextBox5.Text = Replace(Cells(gyo, "r").Value, "-", "") '郵便番号 UserForm4.TextBox6.Text = Cells(gyo, "s") '企業住所 UserForm4.TextBox7.Text = Replace(Cells(gyo, "aa").Value, "-", "") '電話番号 UserForm4.TextBox8.Text = Replace(Cells(gyo, "z").Value, " ", "") '氏名 UserForm4.TextBox9.Text = Replace(Cells(gyo, "y").Value, " ", "") '氏名カナ UserForm4.Show End Sub ------------------------------------ UserForm4.TextBox4に法人名を表示し、法人名は「株式会社」や「有限会社」のように法人格がついていますので、 法人格を取りたいと思い下記コードを作ってみました。 ------------------------------------ With Selection Selection.Replase what:="株式会社", Replasement:="" Selection.Replase what:="有限会社", Replasement:="" Selection.Replase what:="合資会社", Replasement:="" Selection.Replase what:="合名会社", Replasement:="" Selection.Replase what:="社団法人", Replasement:="" Selection.Replase what:="財団法人", Replasement:="" End With ------------------------------------ これをどのように上のコードに入れたらいいのでしょうか・・・・ どなたか教えていただけますでしょうか。 宜しくお願い致します。
- ベストアンサー
- Excel(エクセル)
お礼
お返事が大変遅くなり、すみませんでした。 無事解決することができました。 本当にありがとうございました。