
下記コードを実行するとオブジェクト変数または With ブロック変数が設定されていませんとエラーになります。
findで変数を使うにはどのような変更が必要なのか教えてください。
Dim Sht2 As Worksheet
Dim Sht3 As Worksheet
Dim rng As Range
Dim Buf As String
Set Sht2 = Sheets(1)
Set Sht3 = Sheets(2)
Buf = Month(Sht3.Cells(2, 1)) & "月"
Set rng = Sht2.Range("A:A").Find(what:=Buf, lookat:=xlWhole).Offset(0, 16)
No.5
- 回答日時:
No2です。
>Cells(2,1)には、「2023/5/1」が入っています。
>Buf = Month(Sht3.Cells(2, 1)) & "月"
>では「5月」にはならないのでしょうか。教えてください。
A2セルにどのようにして値が設定されるのかにもよりますが、正しい日付形式であれば月を取得できます。
(ご質問文からは読み取れませんけれど)人間が入力したりする値であれば、日付に似た形であってもエクセルが日付と認識できないものはエラーになりますという意味です。
例えば、
「2023年5月1」とか「2023.05.01」、「20230501」などなど。
日付とは関係のない値が入力されている場合にも当然ながらエラーが発生します。
ご質問文からは不確定な部分がどこまでかがわかりませんけれど、入力ミスなども含めて、可能性のある部分に関しては、値を使用する前にチェックが必要であろうと思います。
質問者様だけが利用するマクロなら、省略したところで問題はありませんけれど、他の人が利用して、たとえ入力ミスであったとしても、エラーが発生すれば「使いものにならないマクロ」という評価になることでしょう。
No.4
- 回答日時:
>Cells(2,1)には、「2023/5/1」が入っています。
>Buf = Month(Sht3.Cells(2, 1)) & "月"
>では「5月」にはならないのでしょうか。教えてください。
A列に設定されている5月が全角になっていませんか。
(5が全角だと検索でエラーになります)
たすかりました。A列の5月は全角でした。半角にしてみたところ解決しました。下記を全角にする方法もあるのでしょうか...
Buf = Month(Sht3.Cells(2, 1)) & "月"
今回A列を半角にしても別の人に来月全角にされてします恐れがありますので教えていただけるとたすかります。
No.3
- 回答日時:
Set rngで右辺の結果がNothingの場合にはそのエラーとなります。
そこをチェックする必要が有ります。
If Not 右辺 Is Nothing Then
Set rng=右辺
End If
No.2
- 回答日時:
こんにちは
どこでエラーが発生しているのか記載がありませんけれど・・
>Set rng = ~~~~
の行で発生しているのなら、Findの結果、該当する値が見つからない場合のエラーではないでしょうか?
センテンスを
Set rng = Sht2.Range("A:A").Find(what:=Buf, lookat:=xlWhole)
までにして、一旦終えておけば、エラーは発生しないでしょう。
例えば、その前の行でも、セル値に文字が入っていたりすればエラーになります。
どういう環境を想定できるのかがわかりませんけれど、セルの状態等が予定通りかをチェックしておくことが必要なのではないでしょうか。
No.1
- 回答日時:
Set rng = Sht2.Range("A:A").Find(what:=Buf, lookat:=xlWhole).Offset(0, 16) を
Set rng = Sht2.Range("A:A").Find(what:=Buf, lookat:=xlWhole)
にしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA エクセル で FIND でのエラーについて,教えてください。
Excel(エクセル)
-
Excel VBAマクロで実行時エラー'91'が出てしまいます。
Excel(エクセル)
-
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
-
4
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
5
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
6
エクセル イベントマクロ Changeイベントを複数作りたい
Access(アクセス)
-
7
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
-
8
cellsで特定の離れた範囲を選択する方法は?
Visual Basic(VBA)
-
9
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
10
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
11
matchプロパティを取得できません…と出ます。
PowerPoint(パワーポイント)
-
12
VBAでEmpty値って何ですか?
Excel(エクセル)
-
13
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
14
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
15
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
16
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
17
VBAを使って、上書き保存の再確認メッセージを出したい。
Visual Basic(VBA)
-
18
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
19
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
-
20
B列の最終行までA列をオートフィル
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAの標準モジュール...
-
テキストボックス中の文字列の...
-
「Columns("A:C")」の列文字を...
-
ExcelVBAでのNZ関数について
-
worksheetFunctionクラスのVloo...
-
EXCELVBAグラフ凡例表示部分の...
-
ステップインで実行しても中断...
-
VBScriptからDLL参照設定したい
-
EXCEL VBA COLLECTIONオブジェ...
-
findメソッドの変数について
-
VB.NETにてエクセルファイルの...
-
実行時エラー 3265「要求された...
-
VBAでオプションボタンによって...
-
パソコンへの「Dropbox...
-
VBA シートのボタン名を変更し...
-
ユーザーフォーム上に現在日時...
-
ユーザーフォームのラベルに時...
-
VBAのフォームでTextBoxがいっ...
-
【Vb.net】プリンタジョブの取得
-
ウォッチ式の文字数制限について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
テキストボックス中の文字列の...
-
エクセルのVBAの標準モジュール...
-
Excelでフィルタをかけると警告...
-
実行時エラー 3265「要求された...
-
上下の位置揃えについて
-
ExcelVBAでのNZ関数について
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
AccessVBAで「dim dbs as datab...
-
EXCEL VBA オートシェイプナン...
-
オブジェクト変数またはWITHブ...
-
[VBA]CDOメッセージ送信エラー
-
エクセルマクロエラー「'Cells'...
-
findメソッドの変数について
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
オブジェクト変数の取得について
-
CreateObjectとGetObjectの違い
おすすめ情報
ありがとうございます。Set rng = Sht2.Range("A:A").Find(what:=Buf, lookat:=xlWhole)
で同エラーは出ませんでした。
If rng1 Is Nothing Then
MsgBox "みつかりませんでした。"
End If
をつけているので見つかりませんでした。となります。
Buf = Month(Sht3.Cells(2, 1)) & "月"
のCells(2,1)には、「2023/5/1」が入っています。
変数を使わず
Set rng = Sht2.Range("A:A").Find("5月", lookat:=xlWhole).Offset(0, 16)
とするとrngはオフセットの値が代入できるのですが....
Buf = Month(Sht3.Cells(2, 1)) & "月"
では「5月」にはならないのでしょうか。教えてください。