マクロを組んでほしい。。。
下記のようなマクロを組みたいのですが
思ったようにいきません。
どなたがご教授いただけないでしょうか。。。
◎やりたいこと1
シート1の2行目、項目名"削除"をFindで探し、
そのひとつ下のセルから最下部までコピー
シート1の2行目、項目名"会社名"をFindで探し、
そのひとつ下のセルから貼り付ける
◎やりたいこと2
シート1の2行目、項目名"契約番号"の列と
シート1の2行目、項目名"締結日"の列を比べ、
"解約日"の列の空白のセルに"2099/3/31"をいれる
(項目名"契約番号"の列と同じ列まで"2099/3/31"を項目名"締結日"にいれる)
◎やりたいこと3
シート1の2行目、項目名"契約番号"で
空白になっている行は全て削除する
宜しくお願い致します!!
No.4ベストアンサー
- 回答日時:
>契約番号の列で空白になっているセルの列を削除するみたいな動きだったのですが・・・
列ではなく「行削除」ですよね?
違う動きとはどういった動きなのかこちらでは判らないのですが、
とりあえず↓のマクロを実行してみてください。
(当然のコトですが、2行目項目の中に「契約番号」という項目がある!という前提です。)
Sub Sample2()
Dim c As Range, lastRow As Long
Set c = Rows(2).Find(what:="契約番号", LookIn:=xlValues, lookat:=xlWhole)
lastRow = Cells(Rows.Count, c.Column).End(xlUp).Row
Range(Cells(3, c.Column), Cells(lastRow, c.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Select
End Sub
「契約番号」列で空白セルがあればその行がすべて選択されているはずです。
これで選択範囲が間違いないのであれば
>Range(Cells(3, c.Column), Cells(lastRow, c.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Select
を
>On Error Resume Next
>Range(Cells(3, c.Column), Cells(lastRow, c.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
に変更してみてください。
「契約番号」列に空白セルがない場合はエラーになりますので
>On Error Resume Next
を追加しています。m(_ _)m
No.3
- 回答日時:
No.1・2です。
No.2のコードも間違いがありました。
>Range(Cells(3, myR.Column), Cells(lastRow, myR.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
は
>Range(Cells(3, c.Column), Cells(lastRow, c.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
になりますね。m(_ _)m
No.2
- 回答日時:
No.1です。
「やりたいこと2」で「契約番号」の列番号と最終行(lastRow)を取得し
「やりたいこと3」でそのまま列番号と最終行を使用していますので、
前回のコードは別々のマクロにするとエラーになる可能性があります。
もし別々のマクロにするのであれば
「やりたいこと3」でもう一度「契約番号」の列番号と最終行を取得する必要があると思います。
「やりたいこと3」のコードを↓にしたらどうなりますか?
Set c = Rows(2).Find(what:="契約番号", LookIn:=xlValues, lookat:=xlWhole)
lastRow = Cells(Rows.Count, c.Column).End(xlUp).Row
On Error Resume Next '//←念のため//
Range(Cells(3, myR.Column), Cells(lastRow, myR.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
No.1
- 回答日時:
こんにちは!
「やりたいこと2」がイマイチよくわからないのですが・・・
Sub Sample1()
Dim lastRow As Long
Dim c As Range, r As Range, myR As Range
'//やりたいこと1//
Set c = Rows(2).Find(what:="削除", LookIn:=xlValues, lookat:=xlWhole)
Set r = Rows(2).Find(what:="会社名", LookIn:=xlValues, lookat:=xlWhole)
lastRow = Cells(Rows.Count, c.Column).End(xlUp).Row
Range(Cells(3, c.Column), Cells(lastRow, c.Column)).Copy
r.Offset(1).PasteSpecial Paste:=xlPasteValues
'//やりたいこと2//
Set myR = Rows(2).Find(what:="契約番号", LookIn:=xlValues, lookat:=xlWhole)
lastRow = Cells(Rows.Count, myR.Column).End(xlUp).Row
Set c = Rows(2).Find(what:="解約日", LookIn:=xlValues, lookat:=xlWhole)
Set r = Rows(2).Find(what:="締結日", LookIn:=xlValues, lookat:=xlWhole)
On Error Resume Next '//←念のため★//
Range(Cells(3, c.Column), Cells(lastRow, c.Column)).SpecialCells(xlCellTypeBlanks).Value = "2099/3/31"
Range(Cells(3, r.Column), Cells(lastRow, r.Column)).SpecialCells(xlCellTypeBlanks).Value = "2099/3/31"
'//やりたいこと3//
Range(Cells(3, myR.Column), Cells(lastRow, myR.Column)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
こんな感じでよいのでしょうかね?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAを使いシート間で貼り付け 3 2023/03/14 20:53
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) Excelの列から検索して該当する行を別シートに転記するVBA 2 2022/12/20 09:35
- Visual Basic(VBA) 【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か 4 2022/09/29 18:56
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 2つのシートの任意のセルの番号が一致したら、一致した行をコピーする VBA 2 2023/06/19 20:48
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) 列を自動で追加したい 3 2022/07/11 12:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセル マクロで列を連続し...
-
桁数が混在する並び替えの方法
-
エクセルVBA Unionはなぜ遅い?
-
(続き)Excel2013で正しくソート...
-
エクセルの関数SUBSTITUTEを、...
-
エクセルのマクロ教えてください。
-
エクセルで2列を検索し2列とも...
-
EXCEL 指定した曜日に番号を振...
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで一部除外した数字を...
-
エクセルの関数についての質問...
-
テキストボックス内の文字のふ...
-
エクセル
-
Excelで数値→文字列変換で指数...
-
Excelで行ごとコピー、同じ行を...
-
Excelの関数について、特定の文...
-
日付が1年以内になると他のセル...
-
エクセルでグラフタイトルが折...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル 指定した文字列を含...
-
エクセルで同じ名前ごとの合計...
-
エクセルVBA Unionはなぜ遅い?
-
エクセルの関数SUBSTITUTEを、...
-
桁数が混在する並び替えの方法
-
エクセルで一部除外した数字を...
-
EXCEL VBA 指定範囲内で特定の...
-
エクセルで列内の同じIDの商品...
-
エクセルで2列を検索し2列とも...
-
エクセル マクロで列を連続し...
-
EXCEL 指定した曜日に番号を振...
-
EXCELである列を上から順にチェ...
-
Excelで自動的に並べ替えなんて...
-
エクセルvba 一つ上の行を指定...
-
エクセル VLOOKUPが反映されない
-
エクセルマクロでA欄に値があ...
-
(続き)Excel2013で正しくソート...
-
ExcelVBA:列方向の並び替え O...
-
エクセルのマクロ教えてください。
-
エクセル 並び替え
おすすめ情報
tom04さん
いつもありがとうございます!
やりたいこと1.2はばっちりでした(゜_゜>)
やりたいこと3に関して、
実行時エラー424
オブジェクトが必要ですというエラーが出てしまいました、、、
下記に元々私が使っていたコードを記載します。。。
このB列が項目名"契約番号"にあたるのですが
B列から動く可能性があり、
項目名で探し出してから下記のような処理をしたいなと考えております。
Columns("B").SpecialCells(xlCellTypeBlanks).Select
Selection.EntireRow.Delete
ご回答ありがとうございます。
エラーは見当たらないのですが
思った動きと違う動きになりました(T_T)
やりたかったこととしては、
契約番号の列で空白になっているセルの列を削除するみたいな動きだったのですが
このコードだとちょっと違う動きをしてます()
(最初は動いたのですがもう一度実行しようとしたらエラー、オブジェクト変数、withブロック変数が設定されていませんというエラーが出てきました。。。)