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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

Q&A

解決済

1回答

1431閲覧

Findを用いて数値を検索し、該当セルを移動させるときにエラーが発生してしまう

sunaday

総合スコア6

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

検索

検索は、あるデータの集まりの中から 目的のデータを見つけ出すことです。

0グッド

0クリップ

投稿2020/05/15 14:36

編集2020/05/16 04:13

前提・実現したいこと

excel VBAで、指定範囲内(今回の場合はL列)から最大値を検索し、別の列(N列)に1つずつ移動させて降順に並べるプログラムを作ることを考えています。繰り返しなどの文はこれから追加していく予定なので、とりあえず1つ数値を移動させられるようにたいです。

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

以下にコードを載せていますが、指定したセルを切り取ってN列へ移動させるところ(12行目)で以下のようなエラーが出てしまいます。

オブジェクト変数または With ブロック変数が設定されていません。

該当のソースコード

Excel

1Sub 最大値を順に移動() 2 3Dim maxLength As Long 4Dim length As Range 5 6With Application.WorksheetFunction 7 maxLength = .Max(Range("L:L")) 8End With 9 10Set length = Range(Cells(12, 2), Cells(Rows.Count, 12).End(xlUp)) 11Set length = length.Find(maxLength, LookIn:=xlValues, lookat:=xlWhole) 12length.Cut Destination:=Cells(Rows.Count, 14).End(xlUp).Offset(1, 0) 13 14End Sub

試したこと

Findを使用している11行目で、右辺の"length"を"Cells"に変えるとプログラムの実行自体はできるのですが、これだと指定範囲(L列の数値が入力されている部分)外の数値が移動される可能性もあります(実際J列に同じ数値があったとき、そちらのセルが移動されてしまいました)。

excelの画面

L列の積載寸法をN列に大きいものから移すイメージです。
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

VBA

1Set length = Range(Cells(12, 2), Cells(Rows.Count, 12).End(xlUp))

VBA

1Set length = Range(Cells(2, 12), Cells(Rows.Count, 12).End(xlUp))

にすれば良いかと思います。

質問のコードですと検索範囲が「B12とL列の最終データ行の間のセル範囲」となります。
このセル範囲にmaxLengthがない場合、Set length = length.Find(maxLength, LookIn:=xlValues, lookat:=xlWhole)にてlengthNothingとなり、length.Cutでエラーとなります。

投稿2020/05/15 18:24

meg_

総合スコア10760

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

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

sunaday

2020/05/16 04:03 編集

ご回答ありがとうございます。 ご指摘いただいた部分のセル範囲を直しましたが、依然として最終行実行時に同じエラーが出てしまいます。 L列で最大値を求めて、同じくL列でその値のセルを指定し、移動するというイメージなので、値が見つからないということは無くなったかと思ったのですが、、、 型があっていない、ということだったりするのでしょうか?
meg_

2020/05/16 03:39

自分が試したところエラーは出ません。具体的にエラーが出たエクセルシートの画像を質問に貼ってもらえませんか?
sunaday

2020/05/16 04:13

シートの画像貼り付けました、よろしくお願いいたします。
sunaday

2020/05/16 04:25

すみません!解決できました! L2のセルが「数値」になっていたところを「標準」に直したらうまくいきました。
meg_

2020/05/16 04:32

エラーは出ませんでしたよ。 全データ移動後にマクロ実行すればエラーは出ますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問