>

c6 : H200 범위의 한 시트 (InputSheet)에 이름 목록이 있습니다. 이 범위의 이름은 한 달에 두 번 변경됩니다. InputSheet의 이름 그룹은 e2 : e50 범위의 다른 시트 (NameList)에있는 이름 목록과 비교됩니다. NameList에있는 각 이름에 대해 InputSheet에서 이름을 제거하고 싶습니다. vba를 처음 사용했지만이 코드를 작성했지만 작동하지 않습니다 (런타임 오류가 발생합니다). 도움을 주셔서 감사합니다!

Sub RemoveNonWords()
Dim datasheet As Worksheet
Dim cl As Range
Set wordrange = InputSheet.Range("C6:h200")
Set datasheet = NameList.Range("E1:E50").Value   
  For Each cl In wordrange
    If cl = datasheet Then
       cl.Selection.ClearContents
    End If
  Next
Range("A6").Select
End Sub


  • 답변 # 1

    게시 된 코드에 많은 문제가 있습니다. 나는 결국 이것이 당신이 찾고있는 것이라고 생각합니다. 코드는 명확성을 위해 주석 처리되었습니다 :

    Sub tgr()
        Dim wb As Workbook
        Dim wsInput As Worksheet
        Dim wsNames As Worksheet
        Dim rInputData As Range
        Dim rNameList As Range
        Dim DataCell As Range
        Dim rClear As Range
        Dim lRow As Long
        Set wb = ActiveWorkbook
        Set wsInput = wb.Sheets("InputSheet")   'Change to the actual sheet name of your input sheet
        Set wsNames = wb.Sheets("NameList")     'Change to the actual sheet name of your name list sheet
        'Get last used row of the C:H columns in wsInput
        With wsInput.Range("C:H")
            lRow = .Find("*", .Cells(1), , , , xlPrevious).Row
            If lRow < 6 Then Exit Sub   'No data
        End With
        'Use the last used row to define your inputdata range, this was hardcoded to C6:H200 in your question
        Set rInputData = wsInput.Range("C6:H" & lRow)
        'Define the namelist range using all populated cells in column E of wsNames, this was hardcoded to E2:E50 in your question
        Set rNameList = wsNames.Range("E2", wsNames.Cells(wsNames.Rows.Count, "E").End(xlUp))
        If rNameList.Row < 2 Then Exit Sub  'No data
        'Data has been found and ranges assigned
        'Now loop through every cell in rInputData
        For Each DataCell In rInputData.Cells
            'Check if the cell being looked at exists in the NameList range
            If WorksheetFunction.CountIf(rNameList, DataCell.Value) > 0 Then
                'Found to exist, add the cell to the Clear Range
                If rClear Is Nothing Then
                    Set rClear = DataCell   'First matching cell added
                Else
                    Set rClear = Union(rClear, DataCell)    'All subsequent matching cells added
                End If
            End If
        Next DataCell
        'Test if there were any matches and if so clear their contents
        If Not rClear Is Nothing Then rClear.ClearContents
    End Sub
    
    

  • 이전 검색 엔진 (google, yahoo)에 특정 웹 사이트가 지역별로 다르다고 말할 수 있습니까?
  • 다음 css - 웹에서 드문 글꼴 사용