A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
Worksheetsコレクションの綴りの間違いを訂正した上で、変数 m への代入を Workbookオブジェクトまでに留める事が正解になります。
【解説】
データ型を Object に変更すると、厳密な型指定から緩い型指定になりますから一応は動作しますが、それだとデータ型の不一致の根本原因に対して手を打てていない事になります。
変数の型が Workbook型なので、代入するデータも変数の型に合わせて Workbookオブジェクトにします。
ご質問のコードでは Workbook型の変数に Rangeオブジェクトが代入されるため、型の不一致でエラーが出ます。
Sub あ()
Dim m As Workbook
Set m = Workbooks(“B.xlsm”)
m.Worksheets(“Sheet1”).Range(“A1”).value = “excel”
End Sub
(少し外れますが関連しますので参考までに)
プロシージャ名の命名は、名前を読めば何をするプロシージャなのか直ぐに理解できる名前を考え、変数名の命名は、名前を読めば何が代入される変数なのかが連想できる名前を考えた方が、後々デバッグする時に必ず役立ちます。可読性の向上が目的です。
コーディングに少し余裕が出てきてからでも構いませんので、コードの質も上がりますから記憶に留めておいてください。
No.3
- 回答日時:
こんばんは、すでに解決済みと存じますが、
>変数設定の際のworkbookはobjectでも大丈夫ですか?
dim m as workbook
Set m = workbooks(“B.xlsm”).workseets(“Sheet1”).range(“A1”)
で発生したエラー438は、変数型を変更しても改善されないと思います。
エラー438は、#1様の回答にある通りなので回避する方法は、カスタムクラスを作成してworkseetsオブジェクトをインスタンスする必要があります。(興味があれば「クラスを作成する」などで検索してください。
もっとも、上記はworkseetsがWorksheetsのタイプミスでない場合です。
タイプミスであるなら、Worksheetsに変更すれば発生するエラーは、
エラー13となり、変数型の不一致なので objectなどにすれば、エラーは発生しないと思います。
ちなみに、型省略(Variant型)、モジュールにOption Explicitの表記をしていないのであれば、
dim m as workbook 一行ごと削除してもエラー無く実行されます。
>worksheet(1)でも同様のエラーが出てきました。
先に示した通り、これはエラー13のはずです。実行時エラーとしては、エラーなので同様ですが、意味合いは別物です。
ExcelVBAは、記録マクロなどもあるので、比較的身近にある書けるプログラムだと思います。
ご質問者様がプログラマーや言語探究者でなく、ただ取り敢えず処理する事が目的であれば、難しい事を気にする必要はないかも知れません。
(私も全くの素人で自然に覚えてしまった事の押し売りです)
ただ、プログラムは機械に対しての命令語なのでルールに沿って命令文を作る必要があります。基本的に機械はうそをつきません。(機械も人間が作った物なのでバグる事がありますが)
m.value = “excel” とありますが、Workbook、WorksheetにはValueプロパティはありません。
=で結ばれた左辺は右辺の一番左のオブジェクト(プロパティ)を指(参照)します。
例えとして
m=神奈川県.横浜市.西区
の場合、mは西区を指しており神奈川県や横浜市を直接的に指しているのではありません。なので、#2様の回答の通りRangeにするべきです。
勿論、ObjectやVariantでも良いです。しかし、せっかくメモリー確保(インスタンス)されているオブジェクトは使った方が良いと思います。(最近の高スペックのPCなら気にしなくても良いのかも知れませんが)
No.1
- 回答日時:
こんにちは
>エラー438と出てきました
メッセージが出るはずなので、エラーの発生した行とその内容から推測できるようになりましょう。
多分、Set m ~~ の行でエラーになっているものと推測しますが、「エラー438」は「オブジェクトはプロパティまたはメソッドをサポートしていません」ということなので、ご提示のセンテンスの場合、
「workbooks(“B.xlsm”)には workseets というプロパティはないよ」ということかと。
多分、Worksheets のタイポでは?
通常、VBAエディタでは、Workbooks、Worksheets、Rangeのように登録されているオブジェクトは頭文字が大文字に変換されますけれど、ご提示のものがそうなっていないのはなぜなのでしょうか?
仮に、上記のタイポを修正したとしても、変数 m がWorkbookとして宣言されているのに対して、
Set m = ~~
の右辺はRangeを返すので、タイプが違うというエラーになりそうな気がします。
アドバイスありがとうございます。
Worksheetの件はworksheet(1)でも同様のエラーが出てきました。小文字の件は完全に自分の怠慢によるものです。スミマセンデシタ。
変数宣言mに関してはworkbookをobjectに変えてみてやってみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) Excleマクロ セル値の代入と文字列の結合について 3 2022/10/05 16:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) VBAでファイルを開くプログラムがエラーです 2 2023/02/21 16:56
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) VBAのエラーが直せません 4 2023/06/12 22:10
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
自分独自の健康法はある?
こうしていると調子がいい!みたいな自分独自の健康法、こだわりはありますか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
実行時エラー 438 の解決策をおしえてください。
Visual Basic(VBA)
-
エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか
Visual Basic(VBA)
-
実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません について
Visual Basic(VBA)
-
-
4
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
5
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
6
【Excel VBA】Worksheets().Active でエラーが出る原因を教えてください
Visual Basic(VBA)
-
7
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
8
特定のPCだけ動作しないVBAマクロがあります。その理由は?
Visual Basic(VBA)
-
9
エクセルの実行時エラー 438"に困っています"
Excel(エクセル)
-
10
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
11
Rangeメソッドは失敗しました。globalオブジェクトについて
Excel(エクセル)
-
12
なぜこんな初歩的なVBAのIf文でエラーか発生して使えないのか、全く理解出来ません。誰か助けてくださ
Visual Basic(VBA)
-
13
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
14
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
15
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
16
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
17
エクセルエラー13型が一致しませんの直し方教えて下さい。
その他(Microsoft Office)
-
18
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
19
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
20
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー48発生時のDLL特定...
-
ADODB.Streamを使用してUTF-8を...
-
OLEDB.NETで接続できない
-
ExcelVBAで、ユーザー定義型は...
-
実行時エラー -'-2147417848
-
実行時エラー3001「引数が間違...
-
Outlook.ApplicationをCreateOb...
-
VBAのエラー発生場所をメッセー...
-
VBAでのエラー
-
VBS実行時エラー オブジェクト...
-
ExcelVBA Range クラスの Page...
-
【Excel VBA】マクロをボタンに...
-
エクセルエラー13型が一致しま...
-
マクロについて教えてください...
-
ExcelのVBAのAutoFillの使い方...
-
なぜこんな初歩的なVBAのIf文で...
-
VBSで変数の宣言はできないので...
-
1列目の何行目に検索文字がある...
-
Access2000での未定義関数repla...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
実行時エラー48発生時のDLL特定...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAがブレークモードになっ...
-
エクセルエラー13型が一致しま...
-
マクロについて教えてください...
-
【Excel VBA】マクロをボタンに...
-
VBAでのエラー
-
ExcelVBAで、ユーザー定義型は...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBSで変数の宣言はできないので...
-
実行時エラー3001「引数が間違...
-
実行時エラー -'-2147417848
-
なぜエラーになるのでしょうか...
-
VBS実行時エラー オブジェクト...
-
Outlook.ApplicationをCreateOb...
-
プロシージャ名の取得
-
VB6+SQL サーバー 2000 で 実行...
-
VBAで、定数式が必要ですのエラ...
おすすめ情報
補足と追加の質問をします。
変数設定の際のworkbookはobjectでも大丈夫ですか?
タイポは参考書にならったのでないかと思います。