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

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

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

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

Q&A

2回答

1366閲覧

シート上に配置したオプションボタンを他のPCでは認識してくれない

genki55

総合スコア6

VBA

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

0グッド

0クリップ

投稿2017/11/06 10:19

編集2017/11/07 09:28

お世話になります。
win7 excel2010 環境でシート場にフォームコントロールのオプションボタンをシート上に配置して望むようなソフトができあがりました。
しかし、同ソフトを他の同一環境のPCでは配置したオプションボタンの行でエラーとなってしまいます。
自宅のPC(win10 excel2016)ではまともに動きました。
この原因を教えていただきたく、よろしくお願いします。

わがままな記述ですみませんでした。
先ず フォームコントロールのオプションボタンを配置したシートがあり10個のボタンのどれかを選択しようとしても選択できませんでした。オプションボタンが認識されていないように感じました。
マクロの一部は以下です。
'オプションボタンの選択が正しいかをチェックする
If Worksheets("メイン").OptionButton1.Value = True And Worksheets("メイン").Cells(19, 11) <> "" Then xxxx

on error goto 文でエラーとなることからシングルステップで確認しましたら上のオプションボタン1の箇所でエラーとなっておりました。

叉、他のOS等同環境のPCでネット上の元PCからドラッグして動きを観ましたらこちらはon error goto の前にエクセル事態が終了するエラーとなってしまいました。

以上です、よろしくお願いいたします。

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

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

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

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

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

jawa

2017/11/07 00:54 編集

「配置したオプションボタンの行でエラーとなってしまいます。」とのことですが、どのようなコードを記述されているのかも提示されておらず、どのようなエラーが発生しているのかもわからない状態ではアドバイスは難しいです。このあたり情報追加いただけないでしょうか。
ExcelVBAer

2017/11/07 03:11

他の環境へは、どうやってそのソフト(ブック?)を移動させたのでしょうか?
moh1ee

2017/11/07 11:07

on error goto文を削除、コメントアウトして動かしてみてください。excelがエラーメッセージを出しますのでそのメッセージ内容を掲示していただけますか?あとオプションボタン以外のコントロールは正常に動作していますか?
guest

回答2

0

質問への追記・修正依頼で「goto文を外して~」とコメントした者です。

オプションボタンのコード上の指定方法についての回答になりますが
ご確認ください。

以下環境にて検証してみました。
Windows7 Excel2010
Windows10 Excel2016

・どちらもブックを新規作成後にマクロブック(.xlsm)として保存。
・シート上にフォームコントロールのオプションボタンを2つ配置。
・違いを確認するためにActiveXコントールのオプションボタンを2つ配置。
・シート上にフォームコントロールのボタンを配置(イベント開始用)
・標準モジュールに下記テストコードを記述、イベント開始用ボタンに登録。

※シート名、オプションボタンのプロパティ等は全て初期値のままです。

以下、オプションボタンの状態確認サンプルコード

Public Sub Test() Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") '↓フォームコントロールのオプションボタン If ws.Shapes("オプション 1").DrawingObject.Value = 1 Then MsgBox "フォームコントロールのオプションボタン1 = True" ElseIf ws.Shapes("オプション 1").DrawingObject.Value = -4146 Then MsgBox "フォームコントロールのオプションボタン1 = False" End If '↓ActiveX コントロールのオプションボタン If ws.OLEObjects("OptionButton1").Object.Value = True Then MsgBox "ActiveXコントロールのオプションボタン1 = True" ElseIf ws.OLEObjects("OptionButton1").Object.Value = False Then MsgBox "ActiveXコントロールのオプションボタン1 = False" End If End Sub

コントロールの指定方法と真偽値の違いをご確認ください。
私の環境では質問者様の「If wb.Worksheets("メイン").OptionButton1.Value」という構文は
コンパイルを通りませんでした。
「OptionButton1.Value」はユーザーフォーム上での指定方法ではないかと。

どちらのタイプのコントロールもシート上でコントロールを選択すると、名前ボックス(数式バーの左側)に
コントロールの名前が表示されます。コード上でその名前を使用しています。
名前ボックスの名前を書き換えることで任意の名前で指定できます。

例)名前ボックスでオプションボタン1の初期名前「オプション 1」を「名前を変更したボタン」に書き換える=>

if wb.WorkSheets("メイン").Shapes("名前を変更したボタン").DrawingObject.value = True then

下記サイトがシート上のコントロールについてわかりやすくまとめられています。
http://blog.livedoor.jp/yorinaga/archives/51947591.html

お役に立てば幸いです。

投稿2017/11/10 15:28

moh1ee

総合スコア73

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

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

genki55

2017/11/11 03:20

ocdpdco様 貴重なお時間を割いていただき有り難うございます。 紹介いただきましたサイトを参考にいたします。
退会済みユーザー

退会済みユーザー

2017/11/11 05:19

ocdpdco様 数式バーの横のボックスでオブジェクト名変更できること、こちらでも確認いたしました。 御指摘ありがとうございました。
guest

0

検証結果による訂正(前回のは削除いたしました。混乱をきたし、大変申し訳ございません。)

1.念のためですが、ファイルの拡張子が「.xlsm」であることは大丈夫ですね?
これは、Excelファイルをコピーすると、デフォルトでは「.xlsx」となるので。

マクロは次の2つ共が有効でないと、実行できなくなっています。
・拡張子が「.xlsm」(マクロ有効ブック形式)
・セキュリティで「マクロを有効にする」設定にしている。

2.こちらでも検証してみたところ、フォームコントロールで追加したオプションボタンでは
「WorkSheets("メイン").OptionButton1.value=TRUE」の部分は不要でした。
この記述が、エラー起因となっていたようです。

従いまして、「WorkBooks~」の部分についても不要です。これは私の誤りでした。
大変申し訳ございませんでした…。

 例えば、コード例としては次のようになります。
```ExcelVBA
Sub オプション6_Click()

'上記「オプション6」は、システムで自動決定されるので、変更不可。

If Worksheets("メイン").Cells(x, y) <> "" Then '処理 End If

End Sub

3.「どのボタンも選択できない」ということでしたが、オプションボタンのマクロを手入力で  入力していませんでしたか?  フォームコントロールの場合もそうですが、マクロ記述の際には  「コントロールをダブルクリックしてから、出来たマクロに対応する処理を入力する」ことが  必要です。  なお、フォームコントロールのオプションボタンのアイテム名は、マクロのフォームモジュールの  場合と違って、任意での変更は不可能です。  もし、企業のPC上で再作成する場合は、下記に気をつけて下さい。 -**シートコピー不可。**オリジナルのファイルコピーか、場合によってはファイルの作り直しが必要。 -シート上のオプションボタンをフォームコントロールで配置する場合、出来立てでは全て非アクティブ  だが、どれか一つをクリックした時点で、クリックしたものが必ずアクティブ状態になるので、  処理には気をつけること。  以上です。また分からないことございましたら、ご連絡下さい。 追記(これは非常に大切なことなので、敢えて残しておきました。): これはおせっかいなことかもしれませんが、「ネットワーク上~」という、 非常に気になった点がございましたので…。 もし「企業のネットワーク」を使ってのマクロ試行、という意味なのでしたら、 **企業のネットワークでのマクロ試行は厳重禁止事項です!!** 企業のネットワークの情報を利用する場合、試行段階では下記のことを厳重に遵守しなければいけません。 -マクロ:ローカルPC上での処理、かつネットワークデータはローカル上にバックアップしたものだけで試行。 -データ:企業貸与のPC以外での持ち出し・持ち込み・利用は厳重禁止! (情報セキュリティ教育で教育しているはずですが…。) **企業のネットワーク上でマクロ試行し、万一データに損失を与えると、最悪刑事事件や損害賠償**という とんでもない事態になることがございますので…。 ほとんどの企業では、ネットワーク上でマクロの実行が出来ないように、ユーザーの実行権限を制限 しています。ネットワークで遮断されたのはそのためと考えられます。 情報セキュリティ部門からお叱り受けますよ? ログ取られていますから…。 (場合によっては始末書提出ものとなることも…。)

投稿2017/11/08 02:38

編集2017/11/10 04:04
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

genki55

2017/11/09 04:24

早速のアンサーを有り難うございます。 1のローカルPC上に移して行いましたがNG。 2のブック名を全て追加しましたが  実行時エラー 438  オブジェクトはこのプロパティまたはメソッドをサポートしていません でNGでした。 If wb.Worksheets("メイン").OptionButton1.Value = True And Worksheets("メイン").Cells(19, 11) <> "" Then このオプションボタンがシート上で選択することができず、マクロも上のオプションボタンの行でエラーと なってしまいます。 次の対応策をお待ちします。
genki55

2017/11/09 04:26

すみません、追加の情報です。 このプロジェクトにはフォームモジュールも使用しております。
退会済みユーザー

退会済みユーザー

2017/11/10 13:22 編集

もしかして、そのファイル…genki55様が「自宅のPC」上で作成し、「企業のPC」にコピーしたもの… ですか!? その場合、回答の追記事項に抵触している可能性が…。 あと、マクロ構文から思いついたのですが、もしかすると「チェックボックス」と 「オプションボタン」を間違っていませんか? 構文で「TRUEかどうか」を確認する必要があるのは、「チェックボックス」の方なので。 一応、下記の点も確認してみて下さい。 「チェックボックス」=□内に「レ点」を入れるもの。単独使用可能。 「オプションボックス」=〇内に●をつけるもの。単独使用不可。 また、「オプションボタン」は、初期段階で必ずどれか1個を「TRUE」にする必要が ございます。また、コントロールにつきましては、「作成したファイルのみ」が有効範囲と なります。 シートコピーとマクロコピーしただけでは、有効にならない仕組みとなっておりますので。 (結構複雑な仕組みとなっています…。)
genki55

2017/11/11 03:24

tmkey01様 有り難うございます。 「回答の追記事項に抵触・・」は勉強いたします。 使用しているのはオプションボタンです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問