• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル共有化時のエクセルスピンボタンのコピー)

ファイル共有化時のエクセルスピンボタンのコピー

このQ&Aのポイント
  • ファイル共有化した際に、エクセルのスピンボタンが起動しなくなるエラーメッセージが表示される問題が発生しました。
  • 共有化を解除するとスピンボタンは正常に動作するため、共有化に問題があることがわかりました。
  • スピンボタンのコードをモジュールに追加することで、共有化したファイルでも正常に動作することができます。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

Range("B1:J5") 外を選択した場合、正しく入力できませんので 下記と差し換えてください。 Private Sub SpinButton1_SpinDown()   With ActiveSheet.Shapes("SpinButton1").TopLeftCell.Offset(, -1)     .Value = .Value - 1   End With End Sub Private Sub SpinButton1_SpinUp()   With ActiveSheet.Shapes("SpinButton1").TopLeftCell.Offset(, -1)     .Value = .Value + 1   End With End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Intersect(Target, Range("B1:J5")) Is Nothing Then Exit Sub   With ActiveSheet.Shapes("SpinButton1")     .Top = Target.Top     .Left = Target.Offset(, 1).Left   End With End Sub

m_chance
質問者

お礼

ありがとうございます! 試したところ不具合もなく理想の形で対応できました!! No.4の方も前回からお世話になっておりましたが、最初にご回答いただきましたのでベストアンサーにさせていただきます。 また困っていたら助けていただけると幸いです。

その他の回答 (3)

回答No.4

一つ前のご質問に回答した者です。 前提として「ブックの共有」があるのであれば 先般のやり方では無理です。 「ブックの共有」をすると、 その辺りのコントロール(フォームもアクティブXも)を含む 全てのシェイプが編集できなくなるからです。 先般、私が提示したモノを読めばお解りの通り、 「一度削除して新たに作り直す」コードですから、 シェイプの編集に当たります。 よって、共有されると動かない、という事です。 (私の知識で)考えやすい回避策があるとしたら、とりあえず2つ。 その1 極力シートの左上(A1付近)にActiveXのスピンボタンを配置。 スピンボタンが残る程度の位置で「ウィンドウ枠の固定」。 SpinUpに  Selection = Selection + 1 SpinDownに  Selection = Selection + 1 を指定。 それから共有。 その2 スピンボタンのみのユーザーフォームを作成、 スピンボタンのSpinUpに  Selection = Selection + 1 SpinDownに  Selection = Selection + 1 を指定。 該当範囲がフォーカスを得たら、 モーダルモードでフォームを開く。 それ以外の範囲にフォーカスが抜けたら フォームを閉じる。 どちらかですね。 他さまもおっしゃってますが、ここから先は有料でもおかしくない範囲。 業者を頼るか、お優しい回答者をお待ちください。

m_chance
質問者

お礼

再びありがとうございました! ブックの共有のことをすっかり忘れていてすみません。 素早く回答をいただけたこと、スピンボタンを30000個並べなくてもできたあの感動は忘れません。 また困っていたら助けてください。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

私などには、手に負えない問題のようだが参考に。 http://www.atmarkit.co.jp/ait/articles/0404/03/news018.html の >「ブックを共有すると利用できなくなる機能」という記述を見つけた。この辺を詳しく調べてはどうだろう。 ーー 質問者はシステム会社の一員などで、周りにVBAの特殊問題に詳しい人が居ないのだろうか。(Microsoft Support 担当者レベルの人を想定。) それであれば、最初の質問において、(1)ワークシートに(UserFormの方が普通かなと思う)(2)セルごとに(したがって数百になってしまう)コントロールを張り付けるなんて、ずいぶん素人の発想だと思ったが、共有問題まで控えているなら、近くに(商売的に)VBAに熟達した人が居ないと、行き詰まると思う.コントロールをプログラムで動的に作成する、というのもVBA熟達者向けの課題だと思う。 ーー 最初の質問で、スピン・コントロールを(当初の意向の)コピーではなく、VBAでシートに500セルに、500個、作るコードはテスト的に小生は作れたが、そうすると、ADD(コントロールを増やす)は、利用中(共有中)は行わなくても良いのかもしれないが、私などの環境・技量を超えるのでわからない。 Microsoft Support 担当者レベルの人に聞いてみてはどうだろう。 この程度のスキルの人に相談するのは、有償になるかもしれないが。

m_chance
質問者

お礼

VBAは苦手なのでこちらを利用させていただいています。 有償寸前の高難度な問い合わせに回答いただきありがとうございました。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

フォームのスピンボタンは使いません、 ActiveXコントロール のスピンボタンを1つ設けてください。 セルを選択する度に移動してみました。 Private Sub SpinButton1_SpinDown()   ActiveCell.Value = ActiveCell.Value - 1 End Sub Private Sub SpinButton1_SpinUp()   ActiveCell.Value = ActiveCell.Value + 1 End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range)   If Intersect(Target, Range("B1:J5")) Is Nothing Then Exit Sub   With ActiveSheet.Shapes("SpinButton1")     .Top = Target.Top     .Left = Target.Left + Target.Width   End With End Sub

関連するQ&A