プロが教える店舗&オフィスのセキュリティ対策術

ExcelのVBAで、オプション名やフレーム名と変数を組み合わせて使いたく、Controlsを使ってやってみたのですが、「subまたはfunctionが定義されていません」とエラーメッセージが出て実行できません。コードは下記のようになっているのですが、何がいけないのでしょうか?VBA初心者の為、全くわかりません。どうか宜しくお願いします!!
ちなみに、sheet1とかのシート名をクリックして開いたところに記述しています。標準モジュールではないです。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
C = ActiveCell.colmun
Dim N As Long, FR As Long
For R = 4 To 13
N = R - 3
If Range(R, C) <> "" Then
For FR = 1 To 6
Controls("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
Controls("NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR).Enabled = False
Next
End If
Next
End If
Next
End Sub

A 回答 (3件)

こんにちは。



Controls を Me.OLEObjects に書き換えるとどうでしょう。
あと、Range(R, C) という記述はCells(R, C) の間違い?
変数の宣言も N とFR 以外宣言しないのですか?
    • good
    • 0
この回答へのお礼

ありがとうございます!
ほんとだ、RangeはCellの間違いでした!
変数の宣言は、今まで書いてきたVBAではあまりした事がなくて、それでもうまく行ってたので今回初宣言です。やっぱり絶対した方がいいものですか?とりあえず全部やってみます。

教えて頂いた通りに、Me.OLEObjectsに書き換えてみましたら今度は
C = ActiveCell.colmun が「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とはじかれます。
ワークシートに書いてるVBAだから、使えないものがあるのでしょうか?

お礼日時:2008/04/10 19:10

"NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR


で表している、文字列が実際のオブジェクト名と一致しているかな?

とりあえず、
Me.OLEObjects("NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR).Enabled = False
を 
Debug.Print "NYURYOKU.Frame" & FR & ".NO" & N & "_" & FR
として、イミディエイトで確認してみる。
    • good
    • 0
この回答へのお礼

イミディエイトで確認してみたら、ちゃんと表示できました。
まだ知識不足で、こういうものを作るレベルまで達してないようです。
とりあえず今回は、ユーザーフォームを使うのをやめ、ワークシート上でいろいろと操作する事にして解決できました。(VBAも使って)

お世話になりました。ありがとうございます。

お礼日時:2008/04/11 14:37

No.1です。



>C = ActiveCell.colmun が「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とはじかれます。

colmun じゃなくて、Column です。
    • good
    • 0
この回答へのお礼

ごめんなさい。初歩的なミスでした。そこを直すと、

'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

お礼日時:2008/04/10 21:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!