[[20180616033544]] 『オブジェクトが必要です  の原因がわからず。。』(ももい) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『オブジェクトが必要です  の原因がわからず。。』(ももい)

みなさん、はじめまして
vbaを初めて1週間ほどということもあり未熟も未熟ですのでよろしければご教授ください
コード汚くてすみません。。。全文は下記のURLにのせておきます。

矢印の行が黄色くなる感じです。
原因が分からないので教えていただけるとうれしいです。

    Dim tenki As Integer

    tenki = Worksheets("sheet4").Cells(Row.Count, 1).End(xlUp).Row←

    Worksheets("sheet4").Cells(tenkin + 1, 1) = seihin

http://textuploader.com/dp387

< 使用 Excel:Excel2013、使用 OS:Windows10 >


 Rows.Countです。

(seiya) 2018/06/16(土) 06:05


seiyaさん

返信ありがとうございます<(_ _)>

相変わらずエラー出てしまいます泣
他の最終行の同じような処理にはエラーでないのでほんとに謎です
(ももい) 2018/06/16(土) 10:23


連投します<(_ _)>

中のRowがRowsということだったのですね!
気づかず申し訳ない。。。

治りました!(これで1日悩んでたなんて・・
(ももい) 2018/06/16(土) 10:53


言語のエラーメッセージって慣れないとイマイチ理解しずらいですよね!
こういうエラーが出た時は、コードを分解して検査するのがオススメです。

イミディエイトウィンドウや、ウォッチウィンドウを使えるようになると効率的にデバッグできますよ。
(通りすがり) 2018/06/16(土) 11:25


通りすがりさん

デバックの方法いまいちわかってないので調べて使えるようにします…

再度質問なのですが、プログラム中に以下のソースを加えると矢印の行で「アプリケーショネラーまたはオブジェクト定義のエラー」と出てしまうのですが原因お分かりの方いらっしゃいましたら教えてください<m(__)m>

Dim tenki As Long

    tenki = Worksheets("sheet4").Range("B1048576").End(xlUp).Row ←
    Worksheets("sheet4").Cells(tenki + 1, 1) = seihin
    Worksheets("sheet4").Cells(tenki + 1, 2) = kokyaku
(ももい) 2018/06/16(土) 12:17

シート名に間違いはないですか?
大文字小文字、全角半角含めて。
(カリーニン) 2018/06/16(土) 12:36

 まず変数の宣言を強制するセッティングにしましょう。
http://officetanaka.net/excel/vba/beginner/11.htm

 これをしておかないと、タイプミス等があった時に探すのが面倒になります。
 Row.Count ではコンパイルしないのですぐ気づくはずです。

 此方ではtenkiにきちんと最終行が保持されますが?
 それと、エラーは「アプリケーショネラーまたはオブジェクト定義のエラー」で間違いありませんか?
(seiya) 2018/06/16(土) 12:40

カリーニンさん

シート名に間違いはありませんでした

seiyaさん

変数宣言のはセットしてみようと思います。
エラーはアプリケーショ定義またはオブジェクト定義のエラーです
(ももい) 2018/06/16(土) 12:45


 そのブックは 97-2003で保存されたものではないですか?
 With Worksheets("sheet4")
     tenki = .Range("B" & .Rows.Count).End(xlUp).Row
 End with
 で試してください。
(seiya) 2018/06/16(土) 12:51

seiyaさん

ブックはエクセル2013年のものです。
今出先なので戻ったら試してみます。

別ブックでシンプルにテキストボックス1つ置いて転記させるものは
上記のソースで動いたので他に何かあるのかなぁと。。。

全体のコードが汚いことが裏目にorz
(ももい) 2018/06/16(土) 13:10


せいやさんのに書き換えたらエラーは消えました!

ただ今度はまったく転記がされなくなってしまいました・・・
しばらく試行錯誤しようとおもいます
(ももい) 2018/06/16(土) 18:26


 恐らく97-2003バージョンとそれ以降のバージョンのエクセルファイルが開いている状態で
 新バージョンのブックがアクティブな状況なのでしょう。

 各シートに親ブックを参照してください。

 例
 Dim OldBook As Workbook, NewBook As WorkBook
 Set OldBook = Workbooks("abc.xls")
 Set NewBook = Workbooks("xyz.xlsm")  '<-又はThisWorkbook

 With OldBook.Worksheets("sheet4")
     tenki = .Range("B" & .Rows.Count).End(xlUp).Row
 End with
(seiya) 2018/06/16(土) 19:12

seiyaさん

返信ありがとうございます<(_ _)>
マクロをリセットすると一部、転記できるようになりました。

聞くことばかりで申し訳なさしかないので次の質問で最後にします。
本当に申し訳ないです。。

下記のソースで転記処理を行ったところ、activesheetの1〜4列目の顧客の製品名は転記できるのですが5列目とかになると転記ができなくなってしまいました。
他に比べて顧客名が長いからという理由もかんがえたのですが、一部だけ転記できなくなるというのはどのようなことが考えられるでしょうか。

myObj,kokyakuともにrangeオブジェクトです。(多分)

   Dim result1 As Long
    Dim tenki As Long
    With Worksheets("sheet4")
        tenki = .Range("B" & .Rows.Count).End(xlUp).Row                  
  'シート4に転記するためのもの
    .Cells(tenki + 1, 1) = myObj.Value
    .Cells(tenki + 1, 2) = kokyaku.Value

    End With

    result1 = MsgBox(kokyaku & "には特価がありません。" & vbCrLf & myObj 
& "のA価格は" & Akakaku & "円です。" & vbCrLf & "処理を続行しますか?", 
vbYesNo + vbQuestion)

(ももい) 2018/06/16(土) 20:56


 提示されたコードでは1,2列目への転記分のみですが、
 5列目以降が転記されないのは

 コピー元に値が無い。
 変数の参照セルが間違っている。

 くらいしか考えられませんが...
(seiya) 2018/06/16(土) 21:07

せいやさん

ですよね・・・

○○には特価がありません。
△△のA価格は1000円です。
処理を続けますか?

が正常で、〇の文字数が多いとこ参照すると

○○には特価がありません。
のA価格は1000円です。
処理を続けますか?

になって△が消えちゃうんですよねー・・

(ももい) 2018/06/16(土) 21:29


    Dim s As Variant

    s = Worksheets("sheet2").Cells(ff, zz).Value    '変数sに対応する価
格の値を入れる

    If s = "" Then                                  'もしセルが空だった
場合に仕切り価格に戻す処理
        Dim Akakaku As Variant
        Akakaku = Worksheets("sheet2").Cells(ff, 4).Value

 この時点での Akakaku の値をチェックして、Emptyであるのなら
 Worksheets("sheet2").Cells(ff, 4)のセルに何らかの値があるか確認することでしょうね。
(seiya) 2018/06/16(土) 22:07

seiyaさん

A価格のほうには転記処理してて特価のほうには処理してなかったのが原因でした!

ウォッチウィンドウ便利ということを今回しることができましたー;;
イミディエイトウィンドウの使い方や型式の宣言など基礎を学んで行こうと思います
(ももい) 2018/06/17(日) 03:27


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.