2016-10-25 2 views
0
내 코드를 단순화

: 나는 두 개의 사각형을 그릴 할그리기 Rectagles에 엑셀, 전체 행, "런타임 오류 '1004'"

: 선택한 셀의 좌측면 (코드에 먼저 첫 번째 "A"열에 대해서는 의도되지 않음) 선택한 셀의 두 번째면과 오른쪽면 (코드는 마지막 "XFD"열에 대해 의도되지 않습니다).

두 코드에서 모두 사용되는 함수입니다. 여기

Private Function NumToCol(numCol) 
     NumToCol = Split(Cells(, numCol).Address, "$")(1) 
    End Function 

내 코드 :

Sub CreateLateralRectangles() 
     'Working no problem 

     Dim LftRctl As Shape 
     Dim RhtRctl As Shape 
     Dim RngRht As Range 
     Dim RngLft As Range 

     MyRow = ActiveCell.Row 
     MyCol = ActiveCell.Column 

     LftCol = MyCol - 1 
     RgtCol = MyCol + 1 

     LRng = NumToCol(LftCol - 3) & MyRow & ":" & NumToCol(LftCol) & MyRow 
     RRng = NumToCol(RgtCol) & MyRow & ":" & NumToCol(RgtCol + 3) & MyRow 

     Set RngRht = Range(RRng) 
     Set RngLft = Range(LRng) 

     MsgBox "Beging To Create" 
     Set LftRctl = ActiveSheet.Shapes.AddShape(msoShapeRectangle, RngLft.Left, RngLft.Top, RngLft.Width, RngLft.Height) 
     Set RhtRctl = ActiveSheet.Shapes.AddShape(msoShapeRectangle, RngRht.Left, RngRht.Top, RngRht.Width, RngRht.Height) 
    End Sub 

다음 코드는 "런타임 오류 '1004'"선물 "응용 프로그램 정의 또는 개체 정의 오류"

Sub CreateFullRectangles() 
     'Has problem 

     Dim LftRctl As Shape 
     Dim RhtRctl As Shape 
     Dim RngRht As Range 
     Dim RngLft As Range 

     MyRow = ActiveCell.Row 
     MyCol = ActiveCell.Column 

     LftCol = MyCol - 1 
     RgtCol = MyCol + 1 

     LRng = "A" & MyRow & ":" & NumToCol(LftCol) & MyRow 
     RRng = NumToCol(RgtCol) & MyRow & ":" & "XFD" & MyRow 

     Set RngRht = Range(RRng) 
     Set RngLft = Range(LRng) 

     MsgBox "Beging To Create" 
     Set LftRctl = ActiveSheet.Shapes.AddShape(msoShapeRectangle, RngLft.Left, RngLft.Top, RngLft.Width, RngLft.Height) 
     Set RhtRctl = ActiveSheet.Shapes.AddShape(msoShapeRectangle, RngRht.Left, RngRht.Top, RngRht.Width, RngRht.Height) 
    End Sub 

을하지만, 나는 진짜 오류인지 알아낼 수 없다. 두 번째 코드에서 :

답변

0

RRng이 너무 큽니다. RngRht.Width은 785712입니다. 범위를 줄여서 줄이십시오. XFD를 FD로 변경하여 줄였습니다. 코드 필요에 따라 변경할 수 있습니다.

RRng = NumToCol(RgtCol) & MyRow & ":" & "FD" & MyRow 
내 컴퓨터에 엑셀에서 가능한 RRng에 대한
+0

최대 값은, "EFA"입니다 즉 RngRht.Width = 169056. 당으로 https://msdn.microsoft.com/en-us/library/office/ff700514% 28v = 사무실 .14 % 29.aspx, 최대 허용 열은 16,384입니다. –