• ベストアンサー

Excel スピンボタン 相対参照について

スピンボタンの相対参照について調べていたところ、ちょうどやりたいことと類似した物ありましたので、実際にやってみたのですがうまくいきません。 sub macro1()  with activesheet.shapes(application.caller)   .topleftcell.offset(0, 1) = .oleformat.object.value  end with end sub 上記のようにソースが書かれていましたので入力しても.oleformatのところでエラーになってしまいます。 ご教授お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.5

また、一度Withをやめて試してみてもいいかもしれません。 Sub macro1変更() ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, 1) = ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value End Sub

zeniheiji
質問者

お礼

withをやめて教えて頂いたソースを入力したところ実行することが出来ました。 本当に助かりました。ありがとうございました。

その他の回答 (4)

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.4

また With ActiveSheet.Shapes(tmp) を With ActiveSheet.Shapes(CVar(tmp)) や With ActiveSheet.Shapes(CStr(tmp)) で試してみてもいいかもしれません。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.3

一度以下のコードで試してみてください。 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)
回答No.2

同じことをやってみましたが、A1にあるものもコピーしたものもエラーにはなりませんでした。 コードは質問にあるのを全て記載してますよね。 .topleftcell.offset(0, 1) = .oleformat.object.value だけということもないですよね。 with activesheet.shapes(application.caller) End With がないとそのようなエラーになりますが…。 コピーせずに最初にA1に作ったものだけでやると正常なのでしょうか。 エラーが出るスピンのマクロの登録を再度やってみてはいかがでしょう。

zeniheiji
質問者

補足

A1に作ったものだけ実行しても同じエラーになってしまいます。 ソース自体は何度も確認しましたが合っているようです。 再度マクロを登録してもエラーが出てしまいます。

  • kkkkkm
  • ベストアンサー率66% (1742/2617)
回答No.1

macro1()をスピンボタンのマクロに登録して実行しましたがエラーにはなりませんでした。スピンボタンはフォームコントロールですよね。 ちなみにどのようなエラーだったのでしょうか。

zeniheiji
質問者

補足

A1にスピンボタンを作成して、 隣のセルに値を表示する場合ですが、 A1にスピンボタンを作成し、 上記のソースを入力します。 そして、 A1のスピンボタンを下にコピーして スピンボタンを押すと 参照が不正または不完全です とエラーがでます。 スピンボタンはフォームコントロールです