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
No.1ベストアンサー
- 回答日時:
こんにちは。
Controls を Me.OLEObjects に書き換えるとどうでしょう。
あと、Range(R, C) という記述はCells(R, C) の間違い?
変数の宣言も N とFR 以外宣言しないのですか?
ありがとうございます!
ほんとだ、RangeはCellの間違いでした!
変数の宣言は、今まで書いてきたVBAではあまりした事がなくて、それでもうまく行ってたので今回初宣言です。やっぱり絶対した方がいいものですか?とりあえず全部やってみます。
教えて頂いた通りに、Me.OLEObjectsに書き換えてみましたら今度は
C = ActiveCell.colmun が「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とはじかれます。
ワークシートに書いてるVBAだから、使えないものがあるのでしょうか?
No.3
- 回答日時:
"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も使って)
お世話になりました。ありがとうございます。
No.2
- 回答日時:
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
VBAで既に開いている別アプリケ...
-
実行時エラー 3265「要求された...
-
Excelでフィルタをかけると警告...
-
エクセルマクロエラー「'Cells'...
-
エクセルのVBAの標準モジュール...
-
VBAについてです。 初心者です...
-
EXCEL VBA オートシェイプナン...
-
UserForm1.Showでエラーになり...
-
テキストボックス中の文字列の...
-
ある文字列が全て数字であるか...
-
エクセルVBAでFor each文
-
横軸ラベルの追加に関するエラ...
-
メモリ解放について(ASP)
-
VBA (Row とRowsの違いについて)
-
VBで引数にDictionaryオブジェ...
-
PowerPointVBAでスライドマスタ...
-
EDINETの情報をEXCELにダウンロ...
-
VBScriptでExcelのグラフを貼り...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報