>source

다음과 같은 상자가 있습니다.

숫자 1입니다

그러나 새 시트를 자동으로 추가하므로이 숫자를 1 씩 늘리고 싶습니다.

다음 코드를 시도했습니다.

Sub otdr()
     Dim i As Long, j As Long, Lastrow As Long
     Dim xNumber As Long, yNumber As Long
     Dim otdr As Range, desc As Range, fet As Range, boxdesc As Range
     Dim xName As String
     Dim ws As Worksheet, wk As Worksheet
     Dim shp As Shape
     Application.ScreenUpdating = False
     Set ws = Sheets("OTDR TRACE - 1")
     Set wk = Sheets("Fibre drop release sheet")
     Set fet = wk.Range("E3")
     Set otdr = ws.Range("Q46")
     Set desc = ws.Range("B52")
     Set boxdesc = ws.Range("B60")
     xNumber = Sheets("Frontsheet").Range("D32").Value
      Lastrow = wk.Cells(wk.Rows.Count, "E").End(xlUp).Row
     For i = 1 To (xNumber - 1)
     otdr = "OT " & (i + 1) & " of " & Number
     desc = fet.offset(1, 1)
     ws.Copy After:=ActiveWorkbook.Sheets(ws.Index + i - 1)
     ActiveSheet.Range("B60").Value = i + 1
     ActiveSheet.Name = "OTDR TRACE - " & i + 1
  
     For Each shp In ActiveSheet.Shapes
     If shp Like "Rectangle" Then
     shp.TextFrame2.TextRange.Characters.Text = boxdesc
     End If
     Next shp
     
     Next
     ws.Activate
     otdr = "OT 1 of " & Number
     Application.ScreenUpdating = True
End Sub

오류가 발생합니다."개체가이 속성 또는 메서드를 지원하지 않습니다."디버거가 다음 줄을 가리키고 있습니다.

   If shp Like "Rectangle" Then

숫자를 늘려 새로 복사 한 시트에 사각형을 복사하려면 어떻게해야합니까? 그만큼 like 문은 VBA Excel의 와일드 카드입니다. 내 사각형의 이름은 처음에 "Rectangle 12"입니다. 복사 된 새 시트에서 "직사각형 2"로 변경됩니다. 그렇다면이 와일드 카드의 문제점은 무엇입니까?

  • 답변 # 1

    개체를 비교할 수 없습니다 (a Shape Object ) 문자열로 ...

    그런 다음 만들기 위해 Like 연산자가 작동하는 경우 다음 방법으로 와일드 문자를 사용해야합니다.

    If shp.Nme Like "Rectangle*" Then
    
    

    또는 사용 Instr 다음 방법으로 :

    If InStr(1, shp.Name, "rectangle", vbTextCompare) > 0 Then
    
    

    이 마지막 버전도 대소 문자를 구분하지 않습니다.

관련 자료

  • 이전 java - Spring Boot MiroService에서 Jackson API를 사용하는 동안 JSON 변환 오류
  • 다음 Python 인쇄 요소는 다음 요소 다음에 발생합니다