シート(1)の指定セルに名前を入力すると、シート(2)とシート(3)の中から入力されている名前を探してくるマクロを教えて頂きたいのですが、今のところシート(2)のみ検索されるマクロまで出来ています。
(補足)検索された時間をC2に表示される設定です
Private Sub Worksheet_Change_1(ByVal target As Range) '
Dim c As Range
If target.Address = "$A$2" Then
If target <> "" Then
Set c = Worksheets("sheet2").Range("A:A").Find(What:=target, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
With c.Offset(, 3)
.Value = Format(Now, "m/d hh:mm")
End With
End If
End If
End If
End Sub '
よろしくお願いします
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
こんにちは。
すでに、入力してあった場合は、書き換えないようにしました。
以下のように、Array関数を使うと、複数のシートの検索が可能になります。
Private Sub Worksheet_Change(ByVal Target As Range) '
Dim c As Range
Dim sh As Worksheet
If Target.Address <> "$A$2" Then Exit Sub
If Target = "" Then Exit Sub
For Each sh In Worksheets(Array("Sheet2", "Sheet3"))
Set c = sh.Range("A:A").Find(What:=Target, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
With c.Offset(, 3)
If .Value = "" Then '書き換えをストップ
.Value = Format(Now, "m/d hh:mm")
End If
End With
End If
Next sh
End Sub
No.2
- 回答日時:
こんにちは
よくわからないところがいくつかありますが…
基本的には、 Worksheets("sheet2").とsheet2と指定しているところをsheet3に置き換えれば同じ処理がsheet3に対しても行われます。
一つの方法として、シート名を変数にしておいて繰り返すという方法が考えられます。
例えば簡単にやるなら、
For i = 2 To 3
Set c = Worksheets("sheet" & i).Range("A:A")~~~.
' 以下必要な処理
Next i
のような感じです。
ちゃんとやるなら、シート名を配列にしておいて、そのシートに対して検索するのが宜しいです。
あるいは、コード自体が短いので、同じものをコピペしてシート名の部分を変えて、連続して処理させるようにしてもよいですね。
ただし、上記の方法だと一部分で、ご提示のコードと機能が異なってしまう可能性があります。
ご提示のコードでは、対象列(A:A)内に該当するセルが複数あっても、最初のものだけが処理されるようになっています。
逆に言うと、sheet2、sheet3のA列で重複する名前がないという前提が成立するなら、上記の方法でも結果的に同じ処理になると言えます。
それぞれのシート内では重複はないけれど、同じ氏名がsheet2、sheet3に一つずつ存在し、両方とも処理したいという場合でも、上記の方法で対応可能です。
通常は、該当するもの全部を処理したりする場合も考えられるのですが、その場合は記述方法を変える必要があります。
また、
>補足)検索された時間をC2に表示される設定です
検索された列(A列)に対して、Offset(, 3)としているので、「C2」では無くて「該当する行のD列」に日付と時間が記入されると思いますけれど…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの保護で、列の表示や...
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
エクセルの列の限界は255列以上...
-
VBAで繰り返しコピーしながら下...
-
【VBA】複数のシートの指定した...
-
SUMPRODUCTにて別シートのデー...
-
VLOOKアップ関数の結果の...
-
エクセルの複数シートにあるデ...
-
Excel VBA ピボットテーブルに...
-
エクセル マクロ 標準モジュー...
-
【条件付き書式】countifsで複...
-
ある数値に対して、値を返す数...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセル 日報売上を月報に展開...
-
スプレッドシートでindexとIMPO...
-
【VBA】ピボットテーブルを既存...
-
【VBA】シート名と見出しが一致...
-
アンケート集計をエクセルで行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelのVlookup関数の制限について
-
文字の色も参照 VLOOKUP
-
オートフィルタ使用時にCOUNTIF...
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
エクセル関数に詳しい方、教え...
-
【条件付き書式】countifsで複...
-
Excel の複数シートの列幅を同...
-
エクセル マクロ 標準モジュー...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
Excelでの並べ替えを全シートま...
-
VLOOKアップ関数の結果の...
-
SUMPRODUCTにて別シートのデー...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
【エクセル】1列のデータを交...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
excel 複数のシートの同じ場所...
おすすめ情報