VBA初心者です。初歩的なことですが、ご教授いただきたく存じます。
【完了】とE列に記載してある行を切り取って別シートの一番下(値が入っている行の下)に貼り付けを実行したいのですが、現在の様に行を指定するやり方は理解したのですが、
月毎に貼り付け先の行数が変わっていくので、値が入っている値のすぐ下に貼り付けとVBAを組みたいのですがうまく行きません。
下記のコードを変更して処理をしたいのですが、やり方をご教授していただけると嬉しいです。
'完了行のコピー
Private Sub copy_compline()
Dim wrow As Long
Dim wrow3 As Long
wrow3 = maxrow_sz
For wrow = 3 To maxrow_ms
If ms.Cells(wrow, "E").Value = "完了" Then
sz.Range("A" & wrow3 & ":E" & wrow3).Value = ms.Range("A" & wrow & ":E" & wrow).Value
wrow3 = wrow3 + 1
End If
Next
End Sub
No.1
- 回答日時:
こんにちは
なんだか変ですね。
変数の初期設定もされていないようですし・・・
グローバル変数になっているのでしょうかね、それでメインから呼ばれるサブルーチンなのかな??
>月毎に貼り付け先の行数が変わっていくので、
どこが月ごとの処理なのかも不明です。
通常、最終行を求める場合は、基準となる列(=必ず値が入っている列)に対して
Cells(Rows.Count, n).End(xlup)
などで求めることができます。(nは列番号)
その次の行なら、.Offset(1) としておくとか。
あるいは、空白セルが混じっている可能性があるような場合などでは、シートのUsedRange の次の行を求める方法でも代用できるかも知れません。
No.2ベストアンサー
- 回答日時:
こんにちは
maxrow_sz この変数はどこで代入されているのでしょう?
想像の範疇になりますが、
もし、maxrow_sz=sz.Cells(Rows.Count, "E").End(xlUp).Row
(EはAかも知れない)だった場合、値のあるセルになってしまうので
その下を指定したいのなら 変数は行№で使用しているので+1すれば良いと思います。
ご質問のコードの場合、(色々やり方はあるけれど例として)
wrow3 = wrow3 + 1 と実行後されているので これを実行前に
書き直せば良いかと
If ms.Cells(wrow, "E").Value = "完了" Then
wrow3 = wrow3 + 1
sz.Range("A" & wrow3 & ":E" & wrow3).Value = ms.Range("A" & wrow & ":E" & wrow).Value
’実行前に移す
End If
No.3
- 回答日時:
入力されてる一番下のセルを検出するマクロは、結構基本的なアルゴリズムがあります。
対象の列の一番最後のセルから上に向かって入力が有るかを調べるのです。
・・・
というか、マクロでなくても良いと思うんだ。
Ctrl+↓キー
を押すと連続した範囲の一番下のセルにジャンプする。
もう一度
↓キー
を押せばその下のセルを選択できる。
マジでこんだけ。マクロなんていらない。
・・・余談・・・
このようにマクロに頼らなくても、標準の機能で対応できれば
こんなところで
「代わりにマクロを作ってください。オレ様の成果として使ってやるwww」
なんて投稿をしなくても済みますよ。
なお、ここは自力でマクロを作るためのアドバイスを受ける場所です。
「代わりに作ってください」と作業依頼をする場所ではありません。
もしも
「御託は良いから、マクロのコードを寄こせ」
という事でしたら、有料サイトで作業委託することをお勧めします。
この程度の物でしたら、ワンコインで引き受けてくださると思いますよ。
(1000円分程度の無料券が毎月配られるようなサイトがあるので、そういうサイトを利用すると良いでしょう)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 【VBA】特定のワードが入っている行全体を塗りつぶしたい 4 2022/04/20 15:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
ExcelのVBA。public変数の値が...
-
メッセージボックスのOKボタ...
-
2つのマクロでチェックボックス...
-
エクセルのマクロについて教え...
-
Excel2013 VBA マクロ実行中に...
-
エクセルのマクロについて教え...
-
VBA初心者 Ctrl+での操作、ボタ...
-
エクセルで別のセルにあるふり...
-
エクセルのマクロについて教え...
-
Excelマクロを引数付で起動
-
「マクロ」の語源
-
エクセルのマクロについて教え...
-
レポートで空データ時に印刷しない
-
ユーザーフォームを起動しなが...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報