質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

1941閲覧

セルに値を入れようとすると1004エラーになってしまい対処方法をグーグルさんで調べても分からないのでご助力頂けないでしょうか?

ma2hiro

総合スコア157

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2021/12/21 02:47

お世話になっております。
本当に度々申し訳ございません。

今現在B15の指定のEXCELのB1の値を
今このVBAを動作しているEXCELのB2に入れたいと思い
下記のように実装しました。

ですが
.Cells(2, 2) = motoData
にて

実行時エラー '1004' アプリケーション定義またはオブジェクト定義のエラーです。

以下のように実装したのです……

VBA

1Sub GetDataFromB15() 2 3 Dim motoExcel As String, motoData As String 4 5 motoExcel = range("B15") 6 motoData = "='" & motoExcel & "'!$B$1" 7 8 With ActiveSheet 9 .Cells(2, 2) = motoData 10 .Cells(2, 2).Value = .Cells(2, 2).Value 11 End With 12 13End Sub

デバッガで見たところ

: motoData : "='\192.168.2.79\事業管理\★事業実績データ\定義excel[00次年度のファイル作成.xlsm]'!$B$1" : String

と値はありそうなのですが……

グーグルさんで"実行時エラー '1004'"で調べた
https://www.sejuku.net/blog/71121
を見ても自分の勉強不足なため不明なので
なんという語句でググれば良いのかご助力頂けますようお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

変数を介さずに直接代入した場合はどうなりますか?

ActiveSheet.Cells(1, 1) = "='ブックの場所'!$B$1"

また、VBAを使用せずにExcelのワークシート上で直接数式を入れた場合どうなりますか?
現在参照しにいこうとしている場所を、数式入力でクリックして設定される文字列と比較して違ってたりはしませんか?

投稿2021/12/21 04:58

編集2021/12/21 05:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/12/21 05:20

radian様 コメントありがとうございます。 Sheet1がなかったという理由でした。 細かく分けて考えれば分かりそうなのですが テンパってしまい大変失礼しました。
退会済みユーザー

退会済みユーザー

2021/12/21 05:31 編集

ちなみにこちらの環境(Excel2013)だと、シート名省略した場合エラーにならずに、シートが一つしかないブックではシート名が勝手に補間されて、二つあるブックだとシート名の選択画面が出てくるという挙動になりました。シート名抜けてる事自体は問題あるんでしょうけど、動いてしまう場合もあるという事で、結構謎ですね。
ma2hiro

2021/12/21 05:54

radian様 シートが複数あって2013だと選択画面が出てくるとの情報ありがとうございます。 こちらは2016だとエラーになってしまいました。 EXCELはマイクロソフトの思惑でしばしば仕様変更があるのでしょうがないと諦めています…… コメントありがとうございました。
guest

0

ベストアンサー

ブック名だけでシート名の記載がない。

投稿2021/12/21 03:44

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/12/21 04:09

jinoji様 コメントありがとうございます。 ``` With ThisWorkbook.ActiveSheet .Cells(2, 2) = motoData .Cells(2, 2).Value = .Cells(2, 2).Value End With ``` としても With ThisWorkbook.Worksheets("Sheet1") としても 1004エラーなのです…… 大変申し訳無いのですがご助力頂けますようお願い申し上げます。
jinoji

2021/12/21 04:12

そこではなくB15セルの値のこと
ma2hiro

2021/12/21 04:40

jinoji様 度々ありがとうございます。 >そこではなくB15セルの値のこと とは motoExcel = range("B15").Value としろという事でしょうか? それでも動作しないのです…… 本当に理解が悪く申し訳無いのですがもう少し情報を頂けますと幸いです。
jinoji

2021/12/21 04:55

\192.168.2.79\事業管理\★事業実績データ\定義excel[00次年度のファイル作成.xlsm] \192.168.2.79\事業管理\★事業実績データ\定義excel[00次年度のファイル作成.xlsm]Sheet1
ma2hiro

2021/12/21 05:17

ありがとうございます!!!!!!!! シートの指定がなかったのでエラーだったと納得しました。 この度は本当にお手数おかけしました。本当にありがとうございました。
guest

0

Cells(2, 2)
はセルのオブジェクトそのものでmotoData
は定義からするとStringであるため、セルオブジェクトにStringは入れられない(型が違う)という意味になるかと思います。

下記のようにした上で2行目は不要ではないでしょうか

vba

1.Cells(2, 2).Value = motoData

投稿2021/12/21 03:14

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ma2hiro

2021/12/21 04:43

m.ts10806様 コメントありがとうございます。 https://daitaideit.com/vba-workbooks-reference/ を参考にしたのでそのまま記載してしまいました。 とりあえずちゃんと動作するようになってから色々確認しようと思っていたのですが 現在ちゃんと動作しないのです……
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問