• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:こんばんは、watabe007さん。)

Worksheet_Changeでコンパイルエラーが発生する問題の解決方法

このQ&Aのポイント
  • Worksheet_Changeでコンパイルエラーが発生する問題の解決方法についてご相談です。
  • 現在、Worksheet_Changeを使用してプライベートサブを作成していますが、既に各シートに同様のソースが存在しており、コンパイルエラーが発生しています。
  • 他にソースのコンフリクトを避ける方法や解決策があれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

>標準モジュールで12枚のsheetを指定する形にして、 >いつセルU、セルV、セルW6に数字を入れてもセルY、セルZ、セルAAに >数字記号がコピーされる形が希望なんです。 Sub Test()   Dim SourceRng As Range   Set SourceRng = Range("C6:L6")   If Intersect(ActiveCell, Range("U:W")) Is Nothing Then     MsgBox "U、V、W、何れかのセルを選択して実行してください。", 48     Exit Sub   End If   If Not IsNumeric(ActiveCell.Value) Or ActiveCell.Value = "" Then Exit Sub   ActiveCell.Offset(, 4).Value = SourceRng.Item(ActiveCell.Value) End Sub

961awaawa
質問者

お礼

この場合はsheetセレクト等が必要になりますか? また、P3=OFFSET(A3,0,M3-1) の0の部分を空白にしたいのですがどのようにしたらよろしいでしょうか?

その他の回答 (2)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

二つのWorksheet_Changeを一つにしました。 お試しください。 Private Sub Worksheet_Change(ByVal Target As Range)   Dim myC As Variant   With Target     If .Count > 1 Then Exit Sub     If .Value = "" Then Exit Sub     If Not Intersect(.Cells, Range("L:M")) Is Nothing Then       If .Row < 3 Or Not IsNumeric(.Value) Then Exit Sub       .Offset(, 3).Value = Cells(.Row, .Value).Value     ElseIf .Row >= 6 And .Column = 14 Then       myC = Application.Match(.Value, Cells(.Row, "C").Resize(, 10), 0)       If Not IsError(myC) Then         Cells(.Row, "B").Offset(, myC).Interior.Color = vbYellow         Cells(.Row, "N").Resize(, 6).Borders.LineStyle = xlContinuous         Cells(.Row, "N").Resize(, 6).HorizontalAlignment = xlCenter         Cells(.Row, "N").Offset(, (myC + 1) \ 2).Value = "×"       End If     End If   End With End Sub

961awaawa
質問者

お礼

こんばんはwatabe007さん。せっかく作って頂いたのに質問を訂正させてください。 0、1、2、3、4、5、6、7、8、9の記号のいずれかがセルC6~L6の各セルにダブルことなく適当に入ってます。U6、V6、W6に1~10までのどれかを入れて、 (1)U6に1が入ると、一番目のC6に入った記号がY6にコピーされ (2)V6に5が入ると、C6から5番目のG6に入った記号がZ6にコピーされ (3)W6に7が入ると、C6から7番目のI6に入った記号がAA6にコピーされる という仕組みにしたいです。 今は例えで6行目を使いましたがマクロボタンを押す度に、7行目、8行目.....と開拓?できるようにしたいです。U6V6W6に入れる数字は自分で選択したいです。 標準モジュールで12枚のsheetを指定する形にして、いつセルU、セルV、セルW6に数字を入れてもセルY、セルZ、セルAAに数字記号がコピーされる形が希望なんです。 説明が下手でスミマセン。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

こんにちは >(名前が適切ではありません Worksheet_Change) 既にPrivate Sub Worksheet_Change(ByVal Target As Range)が 書かれているのですね、そちらのコードを全て提示していただけませんか

961awaawa
質問者

お礼

こんばんはwatabe007さん。いつもご協力感謝します。 以前作って頂いたソースになります。 >Private Sub Worksheet_Change(ByVal Target As Range)   Dim myC As Variant   With Target     If .Count > 1 Then Exit Sub     If .Value = "" Then Exit Sub     If .Row < 6 Or .Column <> 14 Then Exit Sub     myC = Application.Match(.Value, Cells(.Row, "C").Resize(, 10), 0)     If Not IsError(myC) Then       Cells(.Row, "B").Offset(, myC).Interior.Color = vbYellow       Cells(.Row, "N").Resize(, 6).Borders.LineStyle = xlContinuous       Cells(.Row, "N").Resize(, 6).HorizontalAlignment = xlCenter       Cells(.Row, "N").Offset(, (myC + 1) \ 2).Value = "×"     End If   End With End Sub このソースが12枚のsheetに入ってます。よろしくお願いいたします。

関連するQ&A