
現在プログラムを作成しています。内容はシート1の各列に内容をいれて実行ボタンを押すとシート2のある行にコピーされるというものです。そのシート2にコピーされる場所というのが、A列に数字がランダムにふってありまして、
シート1のA1セルにたとえば『12』と打って、実行ボタンをおしたら、シート2のA列の中から『12』となっているセルを判別してその行に各項目をコピーしたいのです。
なので 今ほどいったようにシート1に『数字』をうって、シート2のA列中から判別するプログラムはどのようにすればいいのでしょうか?
本当に困っています。
おしえてください。おねがいします。
No.4ベストアンサー
- 回答日時:
#1です。
#3の方が、考えているのはきっと逆で、
シート1ってのは、データと番号入力用のセル&実行ボタンが配置されているんでしょう。
ま、あんまりやりませんが。
当方も勘違いしていて、
データがシート2で、
シート1のA列に数値を入力すると勝手に
シート2の番号に対応する行がコピーされると思い込んでいました(^o^;
閑話休題。
ボタンクリックでやる場合では、実装方法が異なりますので、
プログラムの書き換えを。
Private Sub CommandButton1_Click()
Dim rng As Range
Dim iCount As Integer
iCount = 0
For Each rng In Sheet2.Range("A1:A65535")
If Val(rng.Value) = 0 Then
iCount = iCount + 1
If iCount >= 10 Then
MsgBox "見つかりませんでした。", vbOKOnly + vbExclamation, "失敗"
Exit Sub
End If
Else
If Val(rng.Value) = Val(Sheet1.Range("A1").Value) Then
Sheet2.Cells(rng.Row, 4).Value = Sheet1.Range("A2").Value
MsgBox "D" & rng.Row & "に値をコピーしました。", vbOKOnly + vbInformation, "成功"
Exit Sub
End If
iCount = 0
End If
Next
End Sub
こんな感じで。
No.3
- 回答日時:
こんにちは。
こういった類の質問には直ぐ幾つかの回答がつくものなのですが。。。。
原因は質問からはポイントとなるシート1のレイアウトがはっきりしていないためだと思われます。
因みに当方は最初次のように解釈しました。
データはシート1の一行目だけに(この”だけに”が重要)入力
シート1に置いたコマンドボタンをクリック
シート1のA1の値でシート2を検索
ヒットしたらヒットした行にシート1の一行目をコピー
しかし、No2の回答の補足「シート1のA2の内容をシート2の行のD列に」を見て、
ん???? 謎は深まるばかりなり。。。(^^;;;
質問、補足から別の解釈もできますがそれも自ずと限界があります。
もし一発必中の回答をお求めなら具体的なシート1のレイアウト(なるべく実例に沿った)をアップすることをお勧めします。
以上です。
No.2
- 回答日時:
A1のみではなく、A列全体に数値を入力したら…って感じにしたんですが。
WorkSheet_Changeイベントは引数のTargetの値が変わったら発生するイベントなので、
最初のほうの
If Target.Column = 1 then
を
If Target.Address = Sheet1.Range("A1").Address Then
に変更すればA1セルだけの判定になります。
この回答への補足
本当にご回答ありがたく思います。なぞが解けました。
最後にもう1つだけ疑問がでてきてしまったのでそれだけ教えていただけないでしょうか??何度もすいませんm(_ _)m
このプログラムはシート2の行をシート1へコピーしていますが、
シート1のA2の内容を、、教えてもらったプログラムで判別して見つかったシート2の行のD列にいれたいのですが最後の部分をどのようなプログラムに書き換えればいいのでしょうか?
No.1
- 回答日時:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lRow As Long
Dim lBlankCount As Long
'A列のみが対象
If Target.Column = 1 Then
'対象セルが0の場合Exit
If Val(Target.Value) = 0 Then Exit Sub
'空白カウント=0
lBlankCount = 0
'全行数分ループ
For lRow = 1 To 65535
'空白だったらカウントアップ
If Val(Sheet2.Cells(lRow, 1).Value) = 0 Then
lBlankCount = lBlankCount + 1
If lBlankCount >= 10 Then Exit For
'値が一致
ElseIf Val(Sheet2.Cells(lRow, 1).Value) = Val(Target.Value) Then
'その行の情報をセット
Sheet2.Range(Sheet2.Cells(lRow, 2), Sheet2.Cells(lRow, 255)).Copy
Sheet1.Range(Sheet1.Cells(Target.Row, 2).Address).PasteSpecial
Exit For
End If
Next
End If
End Sub
この回答への補足
プログラムを教えていただき本当にうれしいです。わかりやすい説明もつけていただきましてm(_ _)m
一個だけ教えていただいてもよろしいでしょうか?
判別するプログラムは理解できたのですが、A1の情報はどのプログラムでよみとっているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excelにて、行の最後のセルの値をコピーして別sheetに張りつけるVBAコードをご教授願います 3 2022/11/20 14:35
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) エクセルについて教えてください。 3 2023/06/28 09:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelのVBAのマクロで他のシー...
-
特定の文字を含むシートだけマ...
-
VBAでオブジェクト変数にsetし...
-
エクセルで通し番号を入れてチ...
-
excelのマクロで該当処理できな...
-
シートが保護されている状態で...
-
Excelマクロのエラーを解決した...
-
実行時エラー1004「Select メソ...
-
VBAで列から数字を判別する...
-
VBA 検索して一致したセル...
-
VBAで数式の入ったシートコピー...
-
コード名シートA列と集計シート...
-
実行時エラー'1004': WorkSheet...
-
【VBA】指定した検索条件に一致...
-
セル値の変更でマクロを実行
-
エクセルVBA ListBoxの並び...
-
ユーザーフォームに入力したデ...
-
IFステートの中にWithステート...
-
ExcelのVBAでのグラフ操作について
-
EXCEL VBAで複数シートから該当...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報