怎么在VBA循环中定义图层颜色啊
<p> 我编了个画纵断面的VBA,可是想在循环画地面线的时候,想利用循环语句为各种地面线赋予不同的图层并以颜色分开,但是执行结果都却是一个颜色。请高人指点,不胜感激。</p><p> </p>
<p><font face="Verdana">'画地面线<br/> <br/> Dim point1() As Double<br/> ReDim point1(h)<br/> Dim t As Double<br/>For l = 2 To 6</font></p>
<p><font color="#ff0000" face="Verdana">Set newLayer = ThisDrawing.Layers("l")<br/></font><font color="#ff0000" face="Verdana"> ThisDrawing.ActiveLayer = newLayer<br/> newLayer.color = l </font><font face="Verdana"></font> </p>
<p><font face="Verdana"> point1(0) = jd(0)<br/>point1(1) = jd(1) + (xlSheet.Cells(2, l).Value - min) / by * 1000 + 20<br/>'point1(2) = 0<br/>u = 3<br/>For t = 1 To k - 2<br/>If u <= k + 1 Then<br/> point1(2 * t) = point1(0) + (xlSheet.Cells(u, 1).Value - xlSheet.Cells(2, 1)) / bx * 1000<br/> point1(2 * t + 1) = jd(1) + (xlSheet.Cells(u, l).Value - min) / by * 1000 + 20<br/> 'point1(3 * t + 2) = 0<br/> u = u + 1<br/> End If<br/> Next t<br/> Set zl = ThisDrawing.ModelSpace.AddLightWeightPolyline(point1)<br/> Next l</font></p> <p><font color="#ff0000" face="Verdana">Set newLayer = ThisDrawing.Layers("l")</font></p>
<p><font color="#ff0000">加了“”,<font color="#ff0000">I不会变的啊。你的对象也都在一个层上吧!</font></font></p>
<p><font color="#ff0000"></font> </p> 谢谢指点,我的意思是假如有6种地面线,循环绘制的时候自动新建6种地面线图层,并且每个图层颜色区别开。怎么处理,谢谢高人 ThisDrawing.Layers(CStr(l)) 本帖最后由 作者 于 2010-6-7 15:41:00 编辑 <br /><br /> <p>谢谢<font color="#da2549" face="Verdana"><b>lzh741206,我后来用数组分别给每个需要画的纵断面线赋予值,然后再语句中调用。谢谢你给的提示。</b></font></p>
<p><strong><font color="#da2549"></font></strong> </p>
<p><strong><font color="#da2549"></font></strong> </p>
<p><font face="Verdana">Dim varData(5) As Variant '利用数组为纵断线设置图层提供基础<br/>For i = 2 To 6<br/>varData(i - 2) = xlSheet.Cells(1, i).Value<br/>Next i</font></p>
<p><strong><font color="#da2549"></font></strong> </p>
<p><font face="Verdana">For l = 2 To 6<br/><font style="BACKGROUND-COLOR: #ff9900">Set layObj = ThisDrawing.Layers.Add(varData(l - 2))<br/> ThisDrawing.ActiveLayer = Layers(varData(l - 2)) ' newLayer<br/> ActiveLayer.color = l<br/></font> point1(0) = jd(0)<br/> point1(1) = jd(1) + (xlSheet.Cells(2, l).Value - min) / by * 1000 + 15<br/>'point1(2) = 0<br/>u = 3<br/>For t = 1 To k - 2<br/>If u <= k + 1 Then<br/> point1(2 * t) = point1(0) + (xlSheet.Cells(u, 1).Value - xlSheet.Cells(2, 1)) / bx * 1000<br/> point1(2 * t + 1) = jd(1) + (xlSheet.Cells(u, l).Value - min) / by * 1000 + 15<br/> 'point1(3 * t + 2) = 0<br/> u = u + 1<br/> End If<br/> Next t<br/> Set zl = ThisDrawing.ModelSpace.AddLightWeightPolyline(point1)<br/> Next l</font></p>
页:
[1]