- ベストアンサー
Excel スピンボタン 相対参照について
スピンボタンの相対参照について調べていたところ、ちょうどやりたいことと類似した物ありましたので、実際にやってみたのですがうまくいきません。 sub macro1() with activesheet.shapes(application.caller) .topleftcell.offset(0, 1) = .oleformat.object.value end with end sub 上記のようにソースが書かれていましたので入力しても.oleformatのところでエラーになってしまいます。 ご教授お願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
また、一度Withをやめて試してみてもいいかもしれません。 Sub macro1変更() ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, 1) = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value End Sub
その他の回答 (4)
- kkkkkm
- ベストアンサー率66% (1742/2617)
また With ActiveSheet.Shapes(tmp) を With ActiveSheet.Shapes(CVar(tmp)) や With ActiveSheet.Shapes(CStr(tmp)) で試してみてもいいかもしれません。
- kkkkkm
- ベストアンサー率66% (1742/2617)
一度以下のコードで試してみてください。 Sub macro1() Dim tmp As Variant tmp = Application.Caller Debug.Print tmp With ActiveSheet.Shapes(tmp) 'もしくは ' With ActiveSheet.Shapes("スピン 1") 'スピン 1は一度実行してイミディエイトに出た名前 'もしくは「オブジェクトの選択と表示」で出た名前 .TopLeftCell.Offset(0, 1) = .OLEFormat.Object.Value End With End Sub ちなみに環境はWin10エクセル2013です。 関係は無いと思いますが、参照設定の画像を添付しておきます。
- kkkkkm
- ベストアンサー率66% (1742/2617)
同じことをやってみましたが、A1にあるものもコピーしたものもエラーにはなりませんでした。 コードは質問にあるのを全て記載してますよね。 .topleftcell.offset(0, 1) = .oleformat.object.value だけということもないですよね。 with activesheet.shapes(application.caller) End With がないとそのようなエラーになりますが…。 コピーせずに最初にA1に作ったものだけでやると正常なのでしょうか。 エラーが出るスピンのマクロの登録を再度やってみてはいかがでしょう。
補足
A1に作ったものだけ実行しても同じエラーになってしまいます。 ソース自体は何度も確認しましたが合っているようです。 再度マクロを登録してもエラーが出てしまいます。
- kkkkkm
- ベストアンサー率66% (1742/2617)
macro1()をスピンボタンのマクロに登録して実行しましたがエラーにはなりませんでした。スピンボタンはフォームコントロールですよね。 ちなみにどのようなエラーだったのでしょうか。
補足
A1にスピンボタンを作成して、 隣のセルに値を表示する場合ですが、 A1にスピンボタンを作成し、 上記のソースを入力します。 そして、 A1のスピンボタンを下にコピーして スピンボタンを押すと 参照が不正または不完全です とエラーがでます。 スピンボタンはフォームコントロールです
お礼
withをやめて教えて頂いたソースを入力したところ実行することが出来ました。 本当に助かりました。ありがとうございました。