

VBAについて、現在勉強中な為、色々調べておりますが、詳しい方がおりましたら教えてください。
在庫管理の表をエクセルでやっております。
注文が来て、品物の手配をする時に、在庫の有無を確認したいので下記のような事が出来れば
良いと思っております。
3つのシートを使っております。シート名は、”必要数””出荷数””在庫数”
シート:”在庫数”では、入荷数の合計から、マクロを使ってコピーした”出荷数”の数を
差し引くことにより、発注手配が必要な物とそうでない物がわかりやすいように作りたいと思って
おります。
今回は、注文来た数を出荷数のシートにVBAでコピーさせる方法の質問です。
シート名:”必要数” のセルC2:C:50 を、コピーして、隣のシート”出荷数”のA列の
一番上の空白に、形式を選択して貼り付け(値・行列を入れ替える)
ただし、A列には、日付が入力されてる為、参照した空白の一つ上のセルがコピー元と同じ
日付なら、貼り付けをしないでエラー表示させたい。
自動マクロでは、コピー元を選択して、ここに貼り付けみたいな事はできたのですが
3行目に貼り付けした後は、4行目に貼り付けるという自動マクロがわかりません。
ネットで調べたコードを何個もコピペしてやってみたのですが、なかなかうまく行きません。
詳しい方がおりましたら、コードを教えて頂けると助かります。
どうぞ、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
実証出来る環境に移動出来たので、実証してみました(苦笑)
したらば、案の定コードのミスが2か所。Offset(1)が抜けていたことと
PasteSpecialはPasteとは違って、Selectionで動くこと・・・です。
ま、それを直したのがこれですが。
Sheets("必要数").activate
CHK = Range("C2").Value
Range("C2:C50").copy
Sheets("出荷数").activate
Range("A65536").End(xlUp).Offset(1).Select
IF Selection.Offset(-1).Value<>CHK Then
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
Else
Msgbox "日付が重複しています"
End If
ところで、当然こいつを動かすには前提条件とコピー先シートの準備が
必要です。あまりVBAに慣れていないようなので、コードの解説をしつつ。
まずは
Sheets("必要数").activate
CHK = Range("C2").Value
これで、必要数シートのC2:C50セルの先頭データを変数として取り込みます。
変数名は仮に「CHK」としましたが、これは私の癖で「日付」とかでもいいです。
Range("C2:C50").copy
これでコピーの準備をします。
Sheets("出荷数").activate
Range("A65536").End(xlUp).Offset(1).Select
これは「件数が判らない時の最終行の求め方の定番コード」です。End(xlUp)で
[Ctrl]+[↑]と同じ動きをします。要は「一番下の行から続いている空白の、一番
上のセルに飛ぶ」という処理になります。
http://www.happy2-island.com/excelsmile/smile03/ …
次に
IF Selection.Offset(-1).Value<>CHK Then
これで、一番上の空白のもう一つ上のセル=データの入ってる最終セルを見に
行きます。これが、事前に保管しておいた変数の内容とあっているかチェックする
訳ですね。
当然このことから、コピーする先のシートには、事前に最低でもA1セルに何か
入ってないとエラーする(A1セルに飛んじゃうと、Offset(-1)に当たるセルが存在
しない)ということも判ります。
で、
Selection.PasteSpecial Paste:=xlPasteValues, Transpose:=True
これで「行列を入れ替えて値貼り付け」というわけです。
ちなみに、これだけだと、処理は1回しか動きません。
複数回動かすには、例えばDo~Loopとかして、コピー元を順次変えていくという
ようなコードも必要ですが・・・それは大丈夫なんですよね?
この回答への補足
ご丁寧にありがとうございます。LOOPさせないといけないのは、わかっているのですが、
どこで使えばいいのかわかりません。親切丁寧に教えて頂ける方なので、ご面倒でなければ
教えていただけますでしょうか? 宜しくお願い致します。
アドバイスを頂きありがとうございます。
実際に動かしてみました。今の自分にはこれで十分だと思います。
また、わからない事がありましたら、質問させていただきたいと思いますので
その時は、宜しくお願い致します。
本当に、ありがとうございました。
No.1
- 回答日時:
チェックしてないので、そのまま動くかどうかは分かりませんが、
発想としてはこれで行ける筈です。
Sheets("必要数").activate
CHK = Range("C2").Value
Range("C2:C50").copy
Sheets("出荷数").activate
Range("A65536").End(xlUp).Select
IF Selection.Offset(-1).Value<>CHK Then
Activesheet.PasteSpecial Paste:=xlPasteValues, Transpose:=True
Else
Msgbox "日付が重複しています"
End If
要は事前に「チェックすべきセルの値を変数として受け取り、
IF文で、貼りつけるベく選択したセルの一つ上をチェックして
やる・・・って方法です。
変数でデータを受けて、後でどこかで使うという方法、
選んだセルを基準として、そこから「何個目」というセルの値を
得る方法が判れば、多分出来る話ではないかと思います。
この回答への補足
丁寧にコードを書いて頂きありがとうございます。
実際にエクセルに貼り付けてやってみましたが、うまく行きません。。
貼り付けの部分が、エラーになってしまったので、自分でやってみた
貼り付けのコード( Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=True
を書いてみて、実行すると、貼り付ける事はできたのですが
エラーメッセージもでず、貼り付けした次の行にもコピーされません。。。
Range("A65536").End(xlUp).Select
このコードが何か関係してるでしょうか・・?
お手数ですが、わかる方がおりましたら、教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- その他(Microsoft Office) エクセルマクロ オートフィルターでで選択コピー 2 2022/04/18 11:05
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/25 11:55
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
このQ&Aを見た人はこんなQ&Aも見ています
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
【VBA】特定の条件でセルをコピー
Visual Basic(VBA)
-
エクセルVBAのIFを使ったコピペ
Excel(エクセル)
-
-
4
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
5
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
6
ある条件を満たすセルに対応する行のセル内容をコピーして・・
Visual Basic(VBA)
-
7
VBAで条件が一致する行をコピーしその1つ下へ挿入
Excel(エクセル)
-
8
VBA 別ブックから条件に合うものを転記したいです
Visual Basic(VBA)
-
9
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
10
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
11
【VBA】コピー&複数個所のペースト繰り返し
Excel(エクセル)
-
12
エクセルVBA 4行飛ばしで転記するループ処理
Excel(エクセル)
-
13
VBA 空白行に転記する
Visual Basic(VBA)
-
14
VBAを使って検索したセルをコピーして別の場所に貼り付ける。
Visual Basic(VBA)
-
15
VBA 値と一致した行の一部の列のデータを転記について教えてください
Visual Basic(VBA)
-
16
EXCELマクロで、シート間でのコピーペーストを繰り返す方法
Excel(エクセル)
-
17
VBA 数値を文字列として貼付したい
Excel(エクセル)
-
18
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
19
【VBA】指定した検索条件に一致したら別シートに転記したい
Visual Basic(VBA)
-
20
今日の日付が入った行のデータを取得するマクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JRバス関東さんやJR東海バスさ...
-
経営者がスーパーマンなのか、...
-
ビジネスマンの新幹線座席
-
AutoCADの質問です。 初心者で...
-
社長がトイレにいく際に、隣で...
-
金額を書くところに千円と書い...
-
アムウェイに勧誘されました
-
20歳、男。 ルックス、コミ力自...
-
社労士さんの依頼料金
-
最近仕事で製品の検査をしてい...
-
取引先に挨拶訪問は、今の時代...
-
フリーランスのブランドバイヤ...
-
ブランドバイヤーとは何ですか...
-
強く言ったものに従う。
-
ブラシの製造業務って 大変です...
-
エッセンシャル思考について初...
-
アイデアを商品化するためには...
-
独学で学べて仕事にできること...
-
イラストレーターやデザイナー...
-
どうしたら電話中、上手くメモ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 条件が一致した場合の...
-
Excel2010の並べ替えで行の高さ...
-
リース初心者です 利子率の計...
-
エクセルで複数の勤務時間ごと...
-
エクセルで作った書類に、パン...
-
プルダウンで選択すると隣のセ...
-
60進法で複数セルの足し算、引...
-
エクセルで離れたセルを離れた...
-
エクセル関数で {=TABLE(,セル...
-
エクセルの行高さが、挿入作業...
-
今日の日付が第n曜日かを求める
-
エクセルシートを重ねることは...
-
エクセルを使った分配比率の求...
-
EXCELでR1C1参照形式の絶対参照...
-
エクセルで一番下の日付や時刻...
-
Excelのオートカルクの結果をコ...
-
ワードとエクセル
-
エクセルデータを拡大/縮小して...
-
エクセル関数 2文字目に空白...
-
Excelハイパーリンクのアドレス...
おすすめ情報