- ベストアンサー
Excel VBAでオプション名やフレーム名と変数を組み合わせる方法と、エラーメッセージ「subまたはfunctionが定義されていません」の解決方法
- ExcelのVBAでオプション名やフレーム名と変数を組み合わせる方法をご教示ください。
- Controlsを使用してオプション名やフレーム名と変数を組み合わせる際に「subまたはfunctionが定義されていません」というエラーメッセージが表示されます。このエラーの原因と解決方法を教えてください。
- VBA初心者ですが、オプション名やフレーム名と変数を組み合わせる方法について詳しく教えてください。また、エラーメッセージ「subまたはfunctionが定義されていません」が表示される場合の対処方法を知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 Controls を Me.OLEObjects に書き換えるとどうでしょう。 あと、Range(R, C) という記述はCells(R, C) の間違い? 変数の宣言も N とFR 以外宣言しないのですか?
その他の回答 (2)
- masa_019
- ベストアンサー率61% (121/197)
"NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR で表している、文字列が実際のオブジェクト名と一致しているかな? とりあえず、 Me.OLEObjects("NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR).Enabled = False を Debug.Print "NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR として、イミディエイトで確認してみる。
お礼
イミディエイトで確認してみたら、ちゃんと表示できました。 まだ知識不足で、こういうものを作るレベルまで達してないようです。 とりあえず今回は、ユーザーフォームを使うのをやめ、ワークシート上でいろいろと操作する事にして解決できました。(VBAも使って) お世話になりました。ありがとうございます。
- masa_019
- ベストアンサー率61% (121/197)
No.1です。 >C = ActiveCell.colmun が「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とはじかれます。 colmun じゃなくて、Column です。
お礼
ごめんなさい。初歩的なミスでした。そこを直すと、 'OLEObjects'メソッドは失敗しました:'_Worksheet'オブジェクト というメッセージがでます。いろいろ調べてみてはいるのですが、なかなか答えが見つかりません。宜しくお願いします。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim C As Long Dim N As Long Dim FR As Long C = ActiveCell.Column For R = 4 To 13 N = R - 3 If Cells(R, C) <> "" Then For FR = 1 To 6 Me.OLEObjects("NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR).Enabled = False Next Else For C2 = 3 To 8 If Range(R, C2) = "" Then For FR = 1 To 6 Me.OLEObjects("NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR).Enabled = False Next End If Next End If Next End Sub
お礼
ありがとうございます! ほんとだ、RangeはCellの間違いでした! 変数の宣言は、今まで書いてきたVBAではあまりした事がなくて、それでもうまく行ってたので今回初宣言です。やっぱり絶対した方がいいものですか?とりあえず全部やってみます。 教えて頂いた通りに、Me.OLEObjectsに書き換えてみましたら今度は C = ActiveCell.colmun が「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とはじかれます。 ワークシートに書いてるVBAだから、使えないものがあるのでしょうか?