Excel VBA 質問スレッド №1784 (解決済)
セルに変数とoffsetを使用して、式を入力したい。
投稿者 : ぴか 投稿日時 : 2024/02/19(Mon) 13:42:35 OS : 未指定 EXCEL : 未指定
お世話になっております。
セルに変数とoffsetを使用して、式を入力したいです。
特定の文字列を検索して、そのセルを軸にオフセットを使用して、入力位置を定め、計算式を入力したいです。
下記のコードを使用したところ、3行目でエラーが生じます。
Dim Rng As Range
Set Rng = Columns("B:G").Find(What:="その他", LookAt:=xlWhole)
Rng.Offset(0, 4).fomula = "=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value"
実行時エラー438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
お気づきの点ありましたらご教授ください。
お世話になっております。
セルに変数とoffsetを使用して、式を入力したいです。
特定の文字列を検索して、そのセルを軸にオフセットを使用して、入力位置を定め、計算式を入力したいです。
下記のコードを使用したところ、3行目でエラーが生じます。
Dim Rng As Range
Set Rng = Columns("B:G").Find(What:="その他", LookAt:=xlWhole)
Rng.Offset(0, 4).fomula = "=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value"
実行時エラー438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
お気づきの点ありましたらご教授ください。
スポンサーリンク
[返信 1] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : さんこう 投稿日時 : 2024/02/19(Mon) 15:01:43
>=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
この↑数式をセルに入力したときに、正しく機能しますか?
>=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
この↑数式をセルに入力したときに、正しく機能しますか?
[返信 2] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : ぴか 投稿日時 : 2024/02/19(Mon) 15:21:29
■[返信 1] さんこうさん(2024-02-19 15:01:43)の記事
> >=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
>
> この↑数式をセルに入力したときに、正しく機能しますか?
>
めちゃくちゃな式でしたね、、
こちらに直したところ、Excelでは正しく機能しました。
=INT(OFFSET(C38,0, 5)*OFFSET(C38,0, 12))
C38を変数に置き換えて、修正したのですが、やはりエラーが出てしまいます。
Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
■[返信 1] さんこうさん(2024-02-19 15:01:43)の記事
> >=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
>
> この↑数式をセルに入力したときに、正しく機能しますか?
>
めちゃくちゃな式でしたね、、
こちらに直したところ、Excelでは正しく機能しました。
=INT(OFFSET(C38,0, 5)*OFFSET(C38,0, 12))
C38を変数に置き換えて、修正したのですが、やはりエラーが出てしまいます。
Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
[返信 3] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : さんこう 投稿日時 : 2024/02/19(Mon) 15:31:31
>C38を変数に置き換えて、修正したのですが、
>Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
「変数」のつもりかもしれませんが、単なる文字列として認識されています。
参考になれば。
<vba 数式に変数を入れる>
https://www.google.com/search?q=vba+%E6%95%B0%E5%BC%8F%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B
>C38を変数に置き換えて、修正したのですが、
>Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
「変数」のつもりかもしれませんが、単なる文字列として認識されています。
参考になれば。
<vba 数式に変数を入れる>
https://www.google.com/search?q=vba+%E6%95%B0%E5%BC%8F%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B
[返信 4] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : ぴか 投稿日時 : 2024/02/19(Mon) 15:44:00
■[返信 3] さんこうさん(2024-02-19 15:31:31)の記事
> >C38を変数に置き換えて、修正したのですが、
> >Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
>
> 「変数」のつもりかもしれませんが、単なる文字列として認識されています。
>
> 参考になれば。
>
> <vba 数式に変数を入れる>
> https://www.google.com/search?q=vba+%E6%95%B0%E5%BC%8F%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B
>
うっかりしていました、、
改めて修正しましたが、同じようにエラーが続きます。
Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
ちなみに、セルが結合されている箇所があり、Excelにおいてのオフセットの数字と、VBAにおいてのオフセットの数字が異なっています。
■[返信 3] さんこうさん(2024-02-19 15:31:31)の記事
> >C38を変数に置き換えて、修正したのですが、
> >Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
>
> 「変数」のつもりかもしれませんが、単なる文字列として認識されています。
>
> 参考になれば。
>
> <vba 数式に変数を入れる>
> https://www.google.com/search?q=vba+%E6%95%B0%E5%BC%8F%E3%81%AB%E5%A4%89%E6%95%B0%E3%82%92%E5%85%A5%E3%82%8C%E3%82%8B
>
うっかりしていました、、
改めて修正しましたが、同じようにエラーが続きます。
Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
ちなみに、セルが結合されている箇所があり、Excelにおいてのオフセットの数字と、VBAにおいてのオフセットの数字が異なっています。
[返信 5] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : さんこう 投稿日時 : 2024/02/19(Mon) 15:48:37
>Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
数式を設定する前に、こんな↓感じで、数式が正しいか確認してみましょう。
MsgBox "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
>Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
数式を設定する前に、こんな↓感じで、数式が正しいか確認してみましょう。
MsgBox "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"
[返信 6] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : 通行人 投稿日時 : 2024/02/19(Mon) 15:55:11
「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」なので、
「そんなプロパティもメソッドも知らない!」と言われています。まずは「fomula」のスペル修正しては。
「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」なので、
「そんなプロパティもメソッドも知らない!」と言われています。まずは「fomula」のスペル修正しては。
[返信 7] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : さんこう 投稿日時 : 2024/02/19(Mon) 16:07:43
>「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」なので、
そうですね。見逃していました。
「Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"」なら、シート上で「#NAME?」エラーでした。
>「実行時エラー438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。」なので、
そうですね。見逃していました。
「Rng.Offset(0, 4).fomula = "=INT(OFFSET(" & Rng & ",0, 5)*OFFSET(" & Rng & ",0, 12))"」なら、シート上で「#NAME?」エラーでした。
[返信 8] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : ポイント管理 投稿日時 : 2024/02/19(Mon) 17:35:06
>=INT(OFFSET(" & Rng & ",0, 5)
"の数があってたとして、こんな感じになると思うのだが
=INT(OFFSET(" & その他 & ",0, 5)
まずは、左にある=を外して想定したものになっているのか
自分で確かめましょう
>=INT(OFFSET(" & Rng & ",0, 5)
"の数があってたとして、こんな感じになると思うのだが
=INT(OFFSET(" & その他 & ",0, 5)
まずは、左にある=を外して想定したものになっているのか
自分で確かめましょう
[返信 9] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : higeru 投稿日時 : 2024/02/20(Tue) 08:57:05
■[返信 2] ぴかさん(2024-02-19 15:21:29)の記事
> ■[返信 1] さんこうさん(2024-02-19 15:01:43)の記事
> > >=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
> >
> > この↑数式をセルに入力したときに、正しく機能しますか?
> >
>
> めちゃくちゃな式でしたね、、
> こちらに直したところ、Excelでは正しく機能しました。
> =INT(OFFSET(C38,0, 5)*OFFSET(C38,0, 12))
>
> C38を変数に置き換えて、修正したのですが、やはりエラーが出てしまいます。
> Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
ワークシート関数のOFFSETとRangeのOffsetプロパティを完全に混同してます。
それから(fomulaでなく)formula = "=....." というのは、シートでセルに入力するとの同じですから、例えば "=A1+B2" といったもので、"=rngA1+ rngB1" みたいに "" の中にVBAの変数を書くことはできませんよ(ということはもしかして他のコメントと重複しているかもですが)。
■[返信 2] ぴかさん(2024-02-19 15:21:29)の記事
> ■[返信 1] さんこうさん(2024-02-19 15:01:43)の記事
> > >=INT(Rng.Offset(0, 1).value*Rng.Offset(0, 5).value
> >
> > この↑数式をセルに入力したときに、正しく機能しますか?
> >
>
> めちゃくちゃな式でしたね、、
> こちらに直したところ、Excelでは正しく機能しました。
> =INT(OFFSET(C38,0, 5)*OFFSET(C38,0, 12))
>
> C38を変数に置き換えて、修正したのですが、やはりエラーが出てしまいます。
> Rng.Offset(0, 4).fomula = "=INT(OFFSET(rng,0, 5)*OFFSET(Rng,0, 12))"
ワークシート関数のOFFSETとRangeのOffsetプロパティを完全に混同してます。
それから(fomulaでなく)formula = "=....." というのは、シートでセルに入力するとの同じですから、例えば "=A1+B2" といったもので、"=rngA1+ rngB1" みたいに "" の中にVBAの変数を書くことはできませんよ(ということはもしかして他のコメントと重複しているかもですが)。
[返信 10] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : 通行人 投稿日時 : 2024/02/20(Tue) 10:15:35
■[返信 4] ぴかさん(2024-02-19 15:44:00)の記事
> ちなみに、セルが結合されている箇所があり、Excelにおいてのオフセットの数字と、VBAにおいてのオフセットの数字が異なっています。
例えば Rng.Offset(xx, xx) のときに、Rng(基点のセル) がセル結合されていたら、結合されたセル数分の行番号や列番号はズレますよ。
詳しくは <vba offset 結合セル> などで調べると良いでしょう。
■[返信 4] ぴかさん(2024-02-19 15:44:00)の記事
> ちなみに、セルが結合されている箇所があり、Excelにおいてのオフセットの数字と、VBAにおいてのオフセットの数字が異なっています。
例えば Rng.Offset(xx, xx) のときに、Rng(基点のセル) がセル結合されていたら、結合されたセル数分の行番号や列番号はズレますよ。
詳しくは <vba offset 結合セル> などで調べると良いでしょう。
[返信 11] Re : セルに変数とoffsetを使用して、式を入力したい。
投稿者 : ぴか 投稿日時 : 2024/02/20(Tue) 13:01:35
ご意見いただきありがとうございます!
以下のコードでうまくいきました。
またどうぞよろしくお願いいたします。
Rng.Offset(0, 5).Formula = "=INT(OFFSET(" & Rng.Address & ",0, 5)*OFFSET(" & Rng.Address & ",0, 12))"
ご意見いただきありがとうございます!
以下のコードでうまくいきました。
またどうぞよろしくお願いいたします。
Rng.Offset(0, 5).Formula = "=INT(OFFSET(" & Rng.Address & ",0, 5)*OFFSET(" & Rng.Address & ",0, 12))"
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2026-04-04 12:28:13 )