お世話になります。
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 の前にエクセル事態が終了するエラーとなってしまいました。
以上です、よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
質問への追記・修正依頼で「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
お役に立てば幸いです。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
検証結果による訂正(前回のは削除いたしました。混乱をきたし、大変申し訳ございません。)
1.念のためですが、ファイルの拡張子が「.xlsm」であることは大丈夫ですね?
これは、Excelファイルをコピーすると、デフォルトでは「.xlsx」となるので。
マクロは次の2つ共が有効でないと、実行できなくなっています。
・拡張子が「.xlsm」(マクロ有効ブック形式)
・セキュリティで「マクロを有効にする」設定にしている。
2.こちらでも検証してみたところ、フォームコントロールで追加したオプションボタンでは
「WorkSheets("メイン").OptionButton1.value=TRUE」の部分は不要でした。
この記述が、エラー起因となっていたようです。
従いまして、「WorkBooks~」の部分についても不要です。これは私の誤りでした。
大変申し訳ございませんでした…。
例えば、コード例としては次のようになります。
Sub オプション6_Click()
'上記「オプション6」は、システムで自動決定されるので、変更不可。
If Worksheets("メイン").Cells(x, y) <> "" Then
'処理
End If
End Sub
3.「どのボタンも選択できない」ということでしたが、オプションボタンのマクロを手入力で
入力していませんでしたか?
フォームコントロールの場合もそうですが、マクロ記述の際には
「コントロールをダブルクリックしてから、出来たマクロに対応する処理を入力する」ことが
必要です。
なお、フォームコントロールのオプションボタンのアイテム名は、マクロのフォームモジュールの
場合と違って、任意での変更は不可能です。
もし、企業のPC上で再作成する場合は、下記に気をつけて下さい。
-シートコピー不可。オリジナルのファイルコピーか、場合によってはファイルの作り直しが必要。
-シート上のオプションボタンをフォームコントロールで配置する場合、出来立てでは全て非アクティブ
だが、どれか一つをクリックした時点で、クリックしたものが必ずアクティブ状態になるので、
処理には気をつけること。
以上です。また分からないことございましたら、ご連絡下さい。
追記(これは非常に大切なことなので、敢えて残しておきました。):
これはおせっかいなことかもしれませんが、「ネットワーク上~」という、
非常に気になった点がございましたので…。
もし「企業のネットワーク」を使ってのマクロ試行、という意味なのでしたら、
企業のネットワークでのマクロ試行は厳重禁止事項です!!
企業のネットワークの情報を利用する場合、試行段階では下記のことを厳重に遵守しなければいけません。
-マクロ:ローカルPC上での処理、かつネットワークデータはローカル上にバックアップしたものだけで試行。
-データ:企業貸与のPC以外での持ち出し・持ち込み・利用は厳重禁止!
(情報セキュリティ教育で教育しているはずですが…。)
企業のネットワーク上でマクロ試行し、万一データに損失を与えると、最悪刑事事件や損害賠償という
とんでもない事態になることがございますので…。
ほとんどの企業では、ネットワーク上でマクロの実行が出来ないように、ユーザーの実行権限を制限
しています。ネットワークで遮断されたのはそのためと考えられます。
情報セキュリティ部門からお叱り受けますよ?
ログ取られていますから…。
(場合によっては始末書提出ものとなることも…。)
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.21%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正、ベストアンサー選択の依頼
jawa
2017/11/07 09:53 編集
「配置したオプションボタンの行でエラーとなってしまいます。」とのことですが、どのようなコードを記述されているのかも提示されておらず、どのようなエラーが発生しているのかもわからない状態ではアドバイスは難しいです。このあたり情報追加いただけないでしょうか。
ExcelVBAer
2017/11/07 12:11
他の環境へは、どうやってそのソフト(ブック?)を移動させたのでしょうか?
ocdpdco
2017/11/07 20:07
on error goto文を削除、コメントアウトして動かしてみてください。excelがエラーメッセージを出しますのでそのメッセージ内容を掲示していただけますか?あとオプションボタン以外のコントロールは正常に動作していますか?