No.3ベストアンサー
- 回答日時:
シート名タブを右クリックしてコードの表示を選び,現れたシートに下記をコピー貼り付けます
private sub Worksheet_Change(byval Target as excel.range)
if activecell.column <> 2 then exit sub
do until cells(activecell.row, "A") <> "a"
activecell.offset(1).select
loop
end sub
入力して,B列にとどまった場合に作動します。(例えばTab入力でC列に移動するとかでは作動しない)
#既出回答で寄せられているマクロも同様にして登録しますが,1枚のシートに複数のこれらのマクロを同時に書いて作動させることは(原則として)出来ません。皆さんの回答を試すときは,イチイチブックを(シートを)複写してそれぞれ独自に動作を確認してください。
#selectionchangeイベントを使うのも良い方法に思いましたが,aの行に用事があってデータを記入したい場合にも素直に出来なくなってしまうので注意が必要です。
#changeイベントは,ご相談で想定している「セルに記入してEnterした」ばかりでなく,たとえば「オッと書き間違えたDeleteで消しました」とか「コピー貼り付けやオートフィルドラッグ等で複数のセルにデータを記入した」「セルをまとめて選んで消去した・行挿入・行削除した」などでも起動します。そういった「想定外」操作において,用意したマクロが意図しない動作をしないかキチンとチェックしておく事が完成度を高めますので,一体どういう具合に動作したら(=どんなマクロにしとけば)一番使い勝手がイイのか良く検討してみてください。
この回答への補足
ご返答ありがとうございました。試してみたところほぼうまくいったのですが、B列だけでなくD列やG列でも同様の動きをさせたいときは、どう追加すればいいですか?
補足日時:2011/05/06 22:11No.6
- 回答日時:
ん?
>B列だけでなくD列やG列でも
変更前:
if activecell.column <> 2 then exit sub
変更後:
if application.intersect(activecell, range("B:B,D:D,G:G")) is nothing then exit sub
他にも,変更前のサンプルマクロを応用して「AND条件で,2でなく,4でもなく,6でもなければ即終了」のようにしてもOKです。
2とか4とは,もちろん2列目(B列)や4列目(D列)の事です。
No.5
- 回答日時:
自分では作れないVBAマクロなんて厄介なものを使わずに、
オートフィルタで、A列が"a"じゃないものだけ表示させてから、普通にB列に入力していけば良いと思いますけど、それだと何か不都合でもありますか?
No.4
- 回答日時:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
'MsgBox Target.Address
i = Target.Row + 1
p1:
If Cells(i, "A") = "a" Then
i = i + 1
GoTo p1
Else
Cells(i, "B").Select
End If
End If
End Sub
既出回答に同じものがあれば、すみません無視してください。
例データ A列は入力全に設定有り(a以外の行を空白にしているが、何かa以外の文字が入っていても同じ。
下記は入力後の状態。
A列 B列
3
a
12
1
5
a
a
7
a
3
a
6
No.2
- 回答日時:
こんにちは!
参考程度で・・・
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Selection.Count = 1 Then
If Target.Offset(, -1) = "a" Then
Target.Offset(1).Select
End If
End If
End Sub
こんな感じではどうでしょうか?m(__)m
ご返答ありがとうございました。試してみたところSelectionChangeではなくChangeのほうが都合がよかったので、そちらを採用することにしました。すごくシンプルでわかりやすかったです。
No.1
- 回答日時:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
For i = Target.Row + 1 To Rows.Count
If Range("A" & i) <> "a" Then
Exit For
End If
Next
Range("B" & i).Select
End If
End Sub
とかいかがですか。
お早いご返答ありがとうございました。試してみたところほぼうまくいきました。シンプルな内容で参考になりました。またよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表内で、Enterキーで横→行の最後入力したら次の行の先頭に移動するマクロを作りたい 3 2022/05/01 21:19
- Excel(エクセル) エクセルについて質問です。 8 2022/05/31 16:00
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) 入力と同時に桁数を詰める 3 2022/09/11 20:23
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) A列にある値をB列・C列にVBAで切り出し 3 2022/04/09 19:20
- Visual Basic(VBA) 先頭と末尾を指定して連続した数字を入力 1 2022/09/14 13:12
- Excel(エクセル) ExcelにてA1セルに1、B1セルに月と入力した際に、A列に日付、B列に曜日が入力される様になる為 1 2023/03/02 06:47
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シート保護の状態で行の追加を...
-
エクセルで空白以外のセルの値...
-
一行おきにコピーするマクロが...
-
EXCELにて複数列を同条件(色)...
-
マクロ ScrollColumn について
-
VBAで,特定の漢字が入っている...
-
マクロで値がある列までコピー
-
Excelの非表示列も含めてコピー
-
【初歩】エクセルでのマクロ(...
-
エクセルVBA 2つの別シートから...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルVBA 複数列をコピーす...
-
エクセル マクロ 条件によっ...
-
《エクセル2000》A列・B列の和...
-
エクセル マクロ 貼り付け先が...
-
マクロ初心者です、小数点6桁で...
-
エクセル 特定セルの足し算を...
-
VBAで同じブック内の別シー...
-
マクロでの可視セルのコピー&...
-
Excel 条件に従いセル移動するには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELにて複数列を同条件(色)...
-
一行おきにコピーするマクロが...
-
エクセルで行挿入した際、自動...
-
行数が不規則な一週間ごとの合...
-
Excelの非表示列も含めてコピー
-
エクセル マクロ 貼り付け先が...
-
シート保護の状態で行の追加を...
-
エクセルで表示された値だけ行...
-
エクセルで空白以外のセルの値...
-
エクセル VBA 指定の範囲内をコ...
-
エクセルの関数について(日付で...
-
[Excel VBA]空白セル以外に連番...
-
エクセルで反転コピー
-
【初歩】エクセルでのマクロ(...
-
エクセルで縦に長い表を印刷
-
エクセルVBA 複数列をコピーす...
-
マクロで値がある列までコピー
-
Excel VBAで日にちを入力して線...
-
《エクセル2000》A列・B列の和...
-
マクロ ScrollColumn について
おすすめ情報