Рисование Rectagles в Excel, Entire Row, «Ошибка времени выполнения:« 1004 »»
Я упростил свой код:
Я хочу нарисовать два прямоугольника: от первой до левой стороны выбранной ячейки (код не предназначен для первого столбца «А»). Вторая справа от выбранной ячейки (код не предназначен для последнего столбца «XFD») ,
Функция, которую должен использовать оба кода.
- Как: Наведите указатель мыши на фигуру TextBox
- Использование VBA для вставки и сохранения изображений в файле - Excel 2013
- Запретить или хотя бы обнаружить движение формы Excel
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
Но я не могу понять, что такое реальная ошибка. Во втором коде:
Ваш RRng
слишком велик. RngRht.Width
равен 785712. Попробуйте уменьшить его, уменьшив диапазон. Я изменил XFD на FD, чтобы уменьшить его. Вы можете изменить его в соответствии с потребностями вашего кода.
RRng = NumToCol(RgtCol) & MyRow & ":" & "FD" & MyRow