プロが教えるわが家の防犯対策術!

エクセルでのマクロ機能なんですが、エクセルの行の一番上の一行目に右側にそれぞれの項目を作り、その下にその項目の各データを入れてゆくのですが、一番上の項目にセルをおいてマクロ機能のボタンを押すと、下のデーターがいまだ入ってゐないところに一気にセルが移動するようにしたい場合、どのようにVBA書けばいいのでしょうか。例えば 項目を各セールスマン名として、訪問家名を下に書いてゆく場合、あるセールスマンは訪問の家は多いがあるセールスマンは少ない場合 それぞれ ずるずるとセルをマウスで移動するのに手間がかかるのを簡略化したい。
この前の質問で ダブルクリックの場合では
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row = 1 Then
  Cancel = True
   Cells(Rows.Count, Target.Column).End(xlUp).Offset(1).Select
 End If
End Sub

として 上手く機能するのですが、同じシートにダブルクリック機能が2個あると動かないため
ボタンマクロにするとかち合わないで動くかなと思いまして。 ご教授ください。

質問者からの補足コメント

  • 名前が適切ではありませんと出てしまうんです。

      補足日時:2019/12/12 07:20

A 回答 (4件)

こんにちは



よこからですが・・・

普通に考えれば、No1様の回答の通りで、質問者様が特殊なことをやっていない限り(質問文にないことに関しては常識的な範囲内の想定)、きちんと動作するはずと思います。
質問文しか情報の無い回答者には、既出のもの以上の回答は考えられないでしょう。

>ボタンマクロにするとかち合わないで動くかなと思いまして。
ボタンのマクロにしたいのなら、もっと簡単になります。
アクティブセルに対して動作することにして良いのなら、

Sub Sample()
  Cells(Rows.Count, ActiveCell.Column).End(xlUp).Offset(1).Select
End Sub

※ ボタンへの設定方法はご存知として、マクロ部分のみの回答です。
※ 1行目であることのチェックは行っていませんので、
  アクティブセルの列の最下行の下のセルが選択されます。
    • good
    • 0

こんにちは!



https://oshiete.goo.ne.jp/qa/11400339.html

の件の続きですね。

>同じシートにダブルクリック機能が2個あると動かないため・・・

ダブルクリックのイベントは1つのシートに1つしか登録できません。
複数の操作をしたい場合は、ダブルクリックするセル番地によって分岐するのが一般的です。

例えば↓の画像の場合だと

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Intersect(Target, Range("A1:F1")) Is Nothing Then Exit Sub '//←ダブルクリックセルがA1~F1セル以外は何もしない★//
  With Target
   Cancel = True
    If .Column Mod 2 = 1 Then '//←奇数列の場合は//
     Cells(Rows.Count, .Column + 1).End(xlUp).Offset(1).Select '//右となりの最終行の下のセルを選択//
    Else
     '//偶数列の場合の操作//
    End If
  End With
End Sub

のようなコードにすれば
A1・C1・E1セルをダブルクリックした時だけ、その列の右側列の最終行の下のセルが選択され、
B1・D1・F1セルをダブルクリックすれれば「偶数列の場合の操作」が実行されます。

コード内の「★」の部分でダブルクリックに反応するセル番地を決めます。
連続する範囲でも構わないですし、飛び飛びの範囲も選択可能です。m(_ _)m
「エクセルでのマクロ機能 データの最下部へ」の回答画像4
    • good
    • 0

こちらでは普通に動くので、多分他のダブルクリックの処理のコードに問題があるのでは?


無いとは思いますが、標準モジュールに書き込んだりはしていませんよね?
    • good
    • 0

1行目で他のダブルクリックの処理が不要なら以下のようにするだけで済みますよ



Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row = 1 Then
  Cancel = True
  Cells(Rows.Count, Target.Column).End(xlUp).Offset(1).Select
 Else
  ' その他のダブルクリック処理
 End If
End Sub
    • good
    • 0

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