[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『実行時エラー91・オブジェクト変数またはwithブロック変数の件』(まき)
いつも本webを参考にさせて頂いております。
今回上記エラーが発生しており、数日間考えておりますが、私レベルでは解決出来ません でしたのでご伝授願います。(本エラーについては色々有るのですが。。。。)
現在下記VBAで書いております。非常に長いので途中省略しています。
行いたいのは、指定されたセルに"×"が有るか無いかを検索したいだけです。×が含まれ ていた場合には、resultを-1と代入して次の工程に進みたいと考えております。
Private Sub 予約セーブ_Click()
'−−(途中省略)−−−−
Dim MyRange As Integer
'−−(途中省略)−−−−
Range(Cells(y, x1), Cells(y2, x1)).Select '予約開始と完了日を選択/ちゃんと選択出来た
MyRange = Selection.Find(What:="×", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate'※ここでエラーを表示
Range("A20") = MyRange '確認の為A20にステータスを表示、-1ならば予約が入っている
If MyRange <> -1 Then
'予約日程日を○から×に変更する
Selection.Replace What:="○", Replacement:="×", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
MsgBox "指定されて期間で予約を入れました。", 16, "レンタル管理"
Else '10/27時点のデバッグの為ここに入れているがこの先の動作がokならば下段に移行
MsgBox "指定されて期間は既に予約が入っています。", 16, "レンタル管理"
End If
'−−(途中省略)−−−−
End Sub
Dim MyRange As Integer部をStringに変更すると、エラー表示部のMyRange =""となって
しまいます。Integerだと"0"(×が無い時)となります。
お手数ではございますが、本内容について教えて下さい。
以上よろしくお願い致します。
MyRangeを Activateってどうゆう事なのでしょう?と疑問に思うのは私の勘違いかな。 値を入れたいのではないですか? .Valueで。 (こぎつね)
MyRange = Selection.Find(What:="×", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate'※ここでエラーを表示
^^^^^^^^
↑
対象があっても無くても選択するように書いてあります。
結果は、選択できた場合は、Trueで数値がただと-1
対象が無い場合、選択できないのでエラーになります。
だんだん説明するのがしんどくなってきたので簡単に
Activate 要りません。
Range型の変数にセットしてセットされたかどうかで結果を判定する。
ヘルプにも書いてあると思うし、検索すればたくさん例題があると思います。
BJ
早速のご連絡有り難うございました。両名様が言われる通り)".Activate"を取り除きました。しかし、
上記のエラーメッセージのままでした。。。。そこで考え方を変えて、Activeセル内に"×"が何個有る
かと言うCOUNTIFを使い0個なら次のステップに行く様に見直しました。本VBAは下記の通りです。
一応同VBAにした所、目的通り動く様になりましたので(上記不具合は気になりますが)よしとしました。
Range(Cells(y, x1), Cells(y2, x1)).Select '予約開始と完了日を選択/ちゃんと選択出来た
' MyRange = Selection.Find(What:="×", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
MyRange = Application.CountIf(Selection, "×")
Range("A20") = MyRange '確認の為A20にステータスを表示、-1ならば予約が入っている
If Range("A20") = 0 Then
'予約日程日を○から×に変更する
Selection.Replace What:="○", Replacement:="×", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
MsgBox "指定されて期間で予約を入れました。", 16, "レンタル管理"
Else '10/27時点のデバッグの為ここに入れているがこの先の動作がokならば下段に移行
MsgBox "指定されて期間は既に予約が入っています。", 16, "レンタル管理"
End If
マクロを始めたばかりなので、色々ご迷惑をお掛けしました。また、両名様の敏速なご連絡に感謝します。
また何か有りましたら、よろしくお願い申し上げます。
PS: BJ様、先日はおまけのご連絡有り難うございました。ご指摘通り記述し直しました。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.