>

두 개의 범위를 정의하고 배열에 저장하고 해당 배열 내부 (또는 전체 배열)의 특정 그룹에 수정 사항을 적용하려는 파일이 있습니다. 아래 코드의 모든 것은 부드럽게 실행됩니다 (필요한 선언이있을지라도 내 잘못입니다). 하지만 올해 첫 3 개월 동안 'Select Case'에 추가하고 싶었습니다. 셀을 어떻게 든 "보호"할 수있는 몇 줄의 코드는 다음과 같습니다 :

"(이 코드가 필요한 경우) : 정의 된 배열의 지정된 셀에서 해당 셀에 정보를 삽입 할 의도로 F2를 두 번 클릭하거나 누르십시오.

MsgBox "이 특정 셀에서 수동으로 정보를 추가 할 수 없습니다"

만약 "

이후 아이디어는 삽입 상자를 여는 몇 개의 버튼을 생성하는 것이며, 그 상자에 삽입 된 값은 셀에 등록되어 "수동"쓰기는 허용되지 않습니다.

누군가가 이것으로 나를 도울 수 있다면, 나는 감사 할 것입니다! 미리 감사드립니다!

Sub Structure4()
Application.Workbooks("Book1").Activate
Dim arr As Variant
arr = Array("A6:C105", "I6:AM105", "AN6:AN105", "AO6:AO105", "AP6:AP105", "AQ6:AQ105", "AR6:AR105", "AS6:AS105", "AT6:AT105", "AU6:AU105", "AV6:AV105", "AW6:AW105", "AX6:AX105", "AY6:AY105", "AZ6:AZ105", "BA6:BA105", "BB6:BB105", "BC6:BG105", "BH6:BH105", "BI6:BL105")
Dim wb As Workbook
Set wb = Application.Workbooks("Book1")
Dim ws As Worksheet
Dim i As Integer
For Each ws In wb.Sheets
    Select Case ws.name
    Case "January", "February", "March"
        With ws
            ws.Select
            For i = 0 To 19
                With .Range(arr(i))
                    .Font.name = "Arial Unicode MS"
                    .Font.Size = 8
                    .HorizontalAlignment = xlCenter
                End With
                Select Case i
                    Case 0, 1, 3, 5, 7, 9, 11, 13, 15, 16, 17
                        .Range(arr(i)).NumberFormat = "0.0;[Red]0.0"
                End Select
            Next
        End With
    End Select
Next ws
End Sub

  • 답변 # 1

    워크 시트 코드 창에 다음 코드를 배치하십시오.

    Option Explicit
    Dim rng As Range
    Dim val As Variant
    Dim arrRng As Range
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        If Not Intersect(arrRng, Target) Is Nothing Then
            MsgBox "You can't add information manually on this specific cell"
            Cancel = True
        End If
    End Sub
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Not Intersect(arrRng, Target) Is Nothing Then
            If Target.Address = rng.Address Then
                If Target.Value <> val Then
                    MsgBox "You can't add information manually on this specific cell"
                    Application.EnableEvents = False
                    Target.Value = val
                    Application.EnableEvents = True
                End If
            End If
        End If
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set arrRng = Range("A6:C105, I6:AM105, AN6:AN105, AO6:AO105, AP6:AP105, AQ6:AQ105, AR6:AR105, AS6:AS105, AT6:AT105, AU6:AU105, AV6:AV105, AW6:AW105, AX6:AX105, AY6:AY105, AZ6:AZ105, BA6:BA105, BB6:BB105, BC6:BG105, BH6:BH105, BI6:BL105")
        If Not Intersect(arrRng, Target) Is Nothing Then
            If Target.Count = 1 Then
                Set rng = Target
                val = Target.Value
            End If
        End If
    End Sub
    
    

  • 이전 php - 이메일을 보내기 위해 ENV 이외의 다른 이메일 설정을 사용하는 Laravel 55
  • 다음 sql server - where 절에 따라 날짜로의 문자 변환이 실패합니다