質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

880閲覧

Excelで、選択されるとその行の値を別のシートにコピーされるようにしたい。

sirono

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

2グッド

1クリップ

投稿2022/12/05 15:45

前提

VBAマクロ初心者です。

実現したいこと

Sheet1のA列に文字列"UIDxxxxx"から始まる値の入ったセルがあります、それが選択されると同時にSheet2にその選択されたセルの行の値すべてがコピーされるようにしたいです。
(なぜこれをしたいかというと、今まで手入力でしていた名簿の管理をICカードで出来るようにしたいと思い、ソフトを探していました。ICカードリーダーでエクセルに読み込みと検索が出来るソフトにMANICA TOOLSというのがあるのですが、読み込みモードにしてICカードをタッチすると、カードからUIDを読み取ってそれをセルに入力してくれて、検索モードにして再度ICカードをタッチするとそれが入力されたセルを検索することが出来るのですが、検索した際にそのUIDが書かれたセルが選択されるのです。そのセルが選択されると同時に別のシートに選択された行の情報だけを出力して欲しくてVBAにチャレンジしてみようと思いました。)

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

https://www.forguncy.com/blog/20181217_clickevent
https://extan.jp/?p=7461
こちらを参照にさせて頂いて、Targetを使って別のシートにコピーすればいいのだと思いましたが、特定のセルの条件("UIDxxxxx"から始まるセル以外を選択しても何もならない)の書き方や、「特定のセルを選択するとその行全体が別シートに順番にコピーされる」がわからず、どう調べたらいいのかがわからなくなっています。
自分自身よく分かっておらず、非常に分かりづらい質問文かもしれませんが
どなたかご教授頂けると幸いです。

補足情報(FW/ツールのバージョンなど)

Windows10, Office2021

sirono, botami👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

MANICA TOOLS の詳細な仕様が分からないので、出されている情報だけから、回答します。

とりあえず下記のような条件とします。

  • Sheet1のA列に文字列"UID"から始まる値の入ったセルがある
  • MANICA TOOLSというソフトにより、該当するUIDのセルが選択される
  • 選択されたセルの行のデータをSheet2の最終行の次行にコピーする

Sheet1のモジュール

vba

1Private Sub Worksheet_SelectionChange(ByVal Target As Range) 2 If Target.Cells.Count = 1 And Target.Column = 1 Then '1セルのみ選択かつA列のセルなら 3 If Target.Value Like "UID*" Then 'セルの値がUIDで始まるなら 4 '選択セルの行データを、Sheet2の最終行の次行に転記 5 Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5).Value = _ 6 Target.Resize(, 5).Value 7 End If 8 End If 9End Sub

上記はSheet1の表範囲が5列までの例です。Resize(, 5) の部分の5を実際の列数に変更してください。

上記のコードだけだと、ユーザーがA列のセルを選択してもコピーされてしまいますので、他になんらかの条件を追加した方がいいと思います。例えば、「MANICA TOOLS が「検索モード」になっているか」という条件。
MANICA TOOLS はエクセルのアドインのようなので、何か方法はあると思います。

追記

上記、回答記述後、MANICA TOOLS について検索してみたら、ツールの各動作後にマクロを実行できるようです。

マクロを利用するまでの流れ | MANICA Community Site

コード例
「セルを探す」でIDに対応したファイルやURLを開く | MANICA Community Site

上記を参考にすると下記のコードを標準モジュールに記述して、「セル発見時にマクロを実行する」に下記のマクロを選択すればよさそうです。

標準モジュール

vba

1Sub CopyTo(TagID As String, TimeStamp As String) 2 '選択セルの行データを、Sheet2の最終行の次行に転記 3 Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Offset(1).Resize(, 5).Value = _ 4 ActiveCell.Resize(, 5).Value 5End Sub

上記でうまくいかないようなら、下記に公式のフォーラムがあるので、そこで質問した方がいいかも。

フォーラム | MANICA Community Site

投稿2022/12/06 01:37

編集2022/12/06 02:07
hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sirono

2022/12/19 00:48

お礼が遅れて申し訳ありませんでした。 完璧に私のやりたい事が伝わっていて なおかつ完璧に出来るように書いてくださって、感謝感激です! 本当に助かりました、ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問