[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『オブジェクトが必要です の原因がわからず。。』(ももい)
みなさん、はじめまして
vbaを初めて1週間ほどということもあり未熟も未熟ですのでよろしければご教授ください
コード汚くてすみません。。。全文は下記のURLにのせておきます。
矢印の行が黄色くなる感じです。
原因が分からないので教えていただけるとうれしいです。
Dim tenki As Integer
tenki = Worksheets("sheet4").Cells(Row.Count, 1).End(xlUp).Row←
Worksheets("sheet4").Cells(tenkin + 1, 1) = seihin
< 使用 Excel:Excel2013、使用 OS:Windows10 >
Rows.Countです。
(seiya) 2018/06/16(土) 06:05
返信ありがとうございます<(_ _)>
相変わらずエラー出てしまいます泣
他の最終行の同じような処理にはエラーでないのでほんとに謎です
(ももい) 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
まず変数の宣言を強制するセッティングにしましょう。 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
ブックはエクセル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
返信ありがとうございます<(_ _)>
マクロをリセットすると一部、転記できるようになりました。
聞くことばかりで申し訳なさしかないので次の質問で最後にします。
本当に申し訳ないです。。
下記のソースで転記処理を行ったところ、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
A価格のほうには転記処理してて特価のほうには処理してなかったのが原因でした!
ウォッチウィンドウ便利ということを今回しることができましたー;;
イミディエイトウィンドウの使い方や型式の宣言など基礎を学んで行こうと思います
(ももい) 2018/06/17(日) 03:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.