这就是我想要做的,我真的不知道该怎么做,或者如果可能。 我有一列中生成一些值。假设列号为10. 我想要做什么...如果该列中单元格的值大于1我想绘制一个矩形(在下一个单元格中或靠近该单元格)(第11列相同行)分配给它的宏。 宏将插入另一行之后,那里的单元格和矩形将被绘制在哪里,所以我必须得到矩形的位置。 有什么建议吗? 非常感谢!如何从VBA绘制矩形并将宏分配给它们?
回答
Sub Tester()
Dim c As Range
For Each c In ActiveSheet.Range("A2:A30")
If c.Value > 1 Then
AddShape c.Offset(0, 1)
End If
Next c
End Sub
Sub AddShape(rng As Range)
With rng.Cells(1).Parent.Shapes.AddShape(msoShapeRectangle, rng.Left, _
rng.Top, rng.Width, rng.Height)
.OnAction = "DoInsertAction"
End With
End Sub
Sub DoInsertAction()
Dim r As Long
r = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Row
ActiveSheet.Rows(r + 1).Insert Shift:=xlDown
End Sub
感谢您的回答。我明天会试试它......从我看到的东西看来,我正在寻找。非常感谢! –
+1如果这是OP要寻找的东西,那么切入问题的核心。 – jonsca
这是一个大纲。 InsertRows()
是插入该行
Sub FindErrors(ByVal myrange As Range)
Dim xCell As range
For Each xCell In myrange
If xCell.Value >= 1 Then
xCell.Offset(0, 1).BorderAround xlContinuous, xlThick
xCell.Offset(0, 1) = InsertRow(range("A13:F13"))
End If
Next
End Sub
通行证的范围内为它在操作UDF。基于另一个答案,我不确定边界着色是你在找什么,但你明白了。
我会用实际代码更新答案,因为我们会详细解释更多具体细节 – jonsca
感谢您的回答。这就是我所做的。我扫描列10,我有这个值后,每次更改可能导致列10中的单元格之一更改。如果该列中的其中一个单元格的值是> 1那么我想画一个矩形右在分配该宏的同一行下一列旁边。我知道在宏中写什么......但是我不知道的是,如果我能够以某种方式获得矩形的坐标以知道在哪里插入新行 –
@Andrei哦,你没有说矩形和插入的行是相同的。对不起,我看到你说第11栏,所以我读错了。如果该值大于1,我将逐行扫描范围,如果格式与矩形相匹配,则更改相邻单元格的格式以制作矩形,然后遍历第11列,运行宏。 – jonsca
到形状另一种方法是使用一个边框和双击事件。
将代码添加到工作表模块并更改第10列中的单元格值。 然后双击包含边框的单元格。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Columns(11)) Is Nothing And Target.Count = 1 Then
If Target.Offset(, -1).Value > 1 And Target.Borders.Count > 0 Then
Target.Offset(1).EntireRow.Insert xlDown, False
Cancel = True
End If
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(10)) Is Nothing And Target.Count = 1 Then
If Target.Value > 1 And IsNumeric(Target) Then
Target.Offset(, 1).BorderAround xlContinuous, xlMedium, xlColorIndexAutomatic
Else
Target.Offset(, 1).Borders.LineStyle = xlNone
End If
End If
End Sub
如果你真的想用一个形状然后尝试像下面的东西。
在工作表模块:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Columns(10)) Is Nothing And Target.Count = 1 Then
If Target.Value > 1 And IsNumeric(Target) Then
AddShape Target.Offset(0, 1)
Else
DeleteShape Target.Offset(0, 1)
End If
End If
End Sub
在一个正常的模块:
Sub AddShape(rCell As Range)
'// Check if shape already exists
Dim shLoop As Shape
For Each shLoop In rCell.Parent.Shapes
If shLoop.Type = msoShapeRectangle And shLoop.TopLeftCell = rCell Then
Exit Sub
End If
Next shLoop
With rCell.Parent.Shapes.AddShape(msoShapeRectangle, rCell.Left, rCell.Top, rCell.Width, rCell.Height)
.OnAction = "ShapeClick"
End With
End Sub
Sub DeleteShape(rCell As Range)
Dim shLoop As Shape
For Each shLoop In rCell.Parent.Shapes
If shLoop.Type = msoShapeRectangle And shLoop.TopLeftCell = rCell Then
shLoop.Delete
Exit For
End If
Next
End Sub
Sub ShapeClick()
With ActiveSheet.Shapes(Application.Caller)
ActiveSheet.Rows(.TopLeftCell.Row + 1).Insert Shift:=xlDown
End With
End Sub
- 1. 如何绘制形状并用按钮给它们着色?
- 2. Android:如何将ImageView分成块并将它们分配给ClickClickListener
- 3. 如何将宏分配给VBA中的多组超链接excel
- 4. 如何强制$ ajax等待数据并将它们分配给一个变量?
- 5. 如何绘制矩形?
- 6. 如何绘制矩形?
- 7. 从坐标绘制矩形
- 8. 绘制矩形
- 9. 分解结果并将它们分配给变量
- 10. 绘制矩形,并看到它批次没有任何纹理
- 11. 如何将点击事件处理程序分配给绘制的矩形的一部分?
- 12. 在Android中绘制矩形与它们之间的空格
- 13. 如何将矩阵映射到坐标并绘制它
- 14. 将字符串分配给块并以小写形式执行它们
- 15. 将旋转矩形分割成更小的矩形,如何旋转它们以保持原来的大矩形?
- 16. 在图框上绘制矩形 - 如何限制矩形区域?
- 17. 将事件分配给自定义绘制形状
- 18. 如何格式化列表并将它们分开分配?
- 19. 如何分离图形,然后在一个图形窗口上绘制它们?
- 20. Pygame绘制矩形
- 21. Android - 绘制矩形
- 22. 点绘制矩形
- 23. Swift绘制矩形
- 24. jQuery,获取标签属性并将它们分配给变量
- 25. 如何在Android中绘制一个给定大小的矩形,并将其置于添加它的视图中?
- 26. OpenCV。匹配时绘制矩形
- 27. VB.net绘制矩形形式
- 28. 绘制矩形并注释网页
- 29. 绘制一个矩形,并使用PIL
- 30. 如何查找其他Excel实例并将它们分配给Excel.Application变量
你试图找到上次使用的电池,基本上? – jonsca
否......在一列中,我计算了一个过程中失败项目的数量。通常情况下,这个数字应该是0.所以...如果数字大于1,那么我想绘制一个分配了宏的矩形。该宏将在该矩形和单元格的下面插入另一行,以便重新执行该过程。 –