布局、列表框和其他L字。。
您好,在一个新程序中,我有一个列表框,由当前图形填充#039;该程序的主要目的是向标题栏添加/编辑修订数据。我让它运行,以便更新当前布局,但现在添加列表框后,我想要的是让用户从列表框中选择所需的布局,因此可以是一、三、全部等。这些是我和039;我一直坚持下去,所以任何帮助都将不胜感激:
1:我如何编写代码来找出用户选择的布局,然后只循环这些布局来更新标题栏
2:我想要一个全选复选框-那么我如何编程它来选择列表框中的所有条目。3:当表单第一次加载时,我希望当前布局是列表框中唯一选中的条目,同样,如果用户取消选中全选复选符,我希望它只返回到当前选择的布局。谢谢
列表框因有点顽固而臭名昭著。好的。不是固执,但有点不敏感
要能够在列表框中选择多个项目,请将multiselect属性设置为frmMultiSelectMulti(1)
要确定选择了哪些项目,您需要遍历列表框并选中每个项目[代码0)现在,您有了一个包含所有选定布局的数组,SelectedLayouts()变量定义应该放在表单的声明部分,这样它对表单的其余部分全局可用。现在,使用复选框选择列表框中的所有项目
Private Sub CheckBox1_Click()
Dim X As Integer
For X = 0 To ListBox1.ListCount - 1
ListBox1.Selected(X) = CheckBox1.Value
Next X
End Sub
干杯 您应该知道,用于过滤布局的dxf代码410不';t在VBA中工作 啊..忘了那个小消息 基思,你是一个传奇人物,你似乎每次都在帮助我,所以谢谢。我确实有:
Dim Cx as Integer
For Cx = LBound(SelectedLayouts) To UBound(SelectedLayouts) - 1
ThisDrawing.ActiveLayout = SelectedLayouts(Cx)
' blah blah blah code for revising stuff blah blah..
next Cx 显然,对于Cx=LBound(SelectedLayouts)到UBound(Selectedlayout)-1只需循环遍历字符串值,那么如何将它们传递给布局。我以为这幅画。ActiveLayout=SelectedLayouts(Cx)行可以做到这一点,但我得到了一个类型不匹配的错误 好的。几个指针…
你没有';除非您使用鼠标从屏幕上以图形方式选择对象或使用坐标以编程方式选择对象,否则不需要设置ActiveLayout。我怀疑您希望以编程方式进行操作,并且可以通过选择适当的块来修改属性
如果确实需要设置ActiveLayout,则需要传递Layout对象,而不仅仅是名称。为此…
ThisDrawing.ActiveLayout = ThisDrawing.Layouts.Item(SelectedLayouts(Cx))
现在,假设您将在每个版面上选择标题栏。为此,您只需获取图形中所有标题栏的集合,并根据它们所在的布局对其进行过滤。正如hendie所提到的,这有点棘手。VBA中没有布局过滤器……因此您必须实际检查所选每个块参照的布局特性。 我在ThisDrawing上发现一个键未找到错误。ActiveLayout=ThisDrawing.Layouts。你给我的Item(SelectedLayouts(Cx))行。到目前为止,我通过物理循环每个布局来更新这些块上的标题栏和属性,但有时由于重新生成时间的原因,这可能非常耗时。如果我能';如何在VBA中过滤布局
在“局部变量”窗口中检查SelectedLayouts(Cx)的值……您肯定使其成为全局布局;你呢
您可以在vba中过滤布局,您只需';t使用410 dxf代码,这使它更加复杂 问题是,在我提供的代码(以及您随后使用的代码)中,我用0初始化了SelectedLayouts,然后从那里递增。我这样做的原因是因为计数不是基于零的。例如,布局#3=SelectedLayouts(3)…您应该在LBound(SelectedLayouts)+1开始循环,并在UBound(selectedlayout)结束循环。或者,您可以修改我提供的代码,开始存储在索引0而不是索引1 Brilliant Keith,非常感谢大家,现在只需要整理一下当前的布局(程序运行时会进入纸面空间)并在列表框中突出显示-我该如何实现?
页:
[1]
2