2017-09-07 6 views
0

私はこのコードをExcelブックで作成されるすべてのシートと新しいシートで動作させる方法を知りました。新しいシート助けてくれた皆さん、ありがとう。複数のシートでVBAコードを実行するにはどうすればよいですか?

Dim cmt As Comment 
    Dim charCount As String 
    Dim prevTarget As Range 
    Sub Worksheet_C(ByVal Target As Range) 
    If Target.Value <> Empty Or Target.Value <> "0" Then 
      If Target.Value <> Empty Then 
      Set prevTarget = Target 
      Set Target = Target 
      End If 
     Set cmt = prevTarget.Comment 
      If Target = Empty Then 
      Set prevTarget = Target 
      End If 
      If cmt Is Nothing Then 
      'MsgBox "There is no comment" 
      ElseIf Len(cmt.Text) > 150 Then 
      charCount = Len(cmt.Text) 
      MsgBox "Character Limit is 150. Your comment contains " + charCount + "." 
      End If 
    End If 
End Sub 
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
Call Worksheet_C(Target) 
End Sub 

答えて

0

ThisWorkbookWorkbook_SheetSelectionChange()は全てのシートに対して実行witll:はThisWorkbookモジュールにおいて


Option Explicit 

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
    RestrictCommentSize Target 
End Sub 

をModule1の(新しい汎用VBAモジュール)缶あなたのinitiaを含みます(ビットをクリーンアップ)LサブWorksheet_C


Option Explicit 

Public Sub RestrictCommentSize(ByVal Target As Range) 
    With Target 
     If .CountLarge = 1 Then 
      If Len(.Value2) <> 0 And .Value2 <> "0" And Not .Comment Is Nothing Then 
       If Len(.Comment.Text) > 150 Then 
        Dim msg As String 
        msg = "Your comment contains " & Len(.Comment.Text) & " characters" 
        MsgBox msg & vbCrLf & vbCrLf & "(more than the max of 150)" 
       End If 
      End If 
     End If 
    End With 
End Sub 
0

Worksheet_SelectionChangeは、ワークシートの特定のルーチンです。

手動で新しいシートを作成した場合、シートをポーリングしてコードが存在するかどうかを確認するバックグラウンドプロセスを実行しない限り、シートのVBAコンテンツを簡単に制御できません。

ただし、シートでコードを作成する場合は、シート固有のVBAコードも作成するコードを追加できます。

関連する問題