大家好,
我有两个问题要问你。
这是我用于练习的简单VBA代码。我想问我做错了什么,因为然后我加载了一个*。dwg文件并运行宏,我总是得到Else语句。我不知道为什么。。。那么,我需要如何比较正确的字符串层名才能得到正确的if-elseif或else语句呢?
第二个问题是,在我选择autocad上的图层时,是否可以编写这样的程序自动运行?
- Private Sub CommandButton1_Click()
- Dim strLayerKonturas As String
- Dim strLayerAsys As String
- Dim strLayerMatmenys As String
- Dim objLayer As AcadLayer
- Dim intColor As Integer
- strLayerKonturas = "konturas"
- strLayerAsys = "Asys"
- strLayerMatmenys = "Matmenys"
- 'For Each objLayer In ThisDrawing.Layers
- If "" = strLayerKonturas Then ' exit if no name entered
- If objLayer.Color = acRed Xor objLayer.Linetype = "Continuous" Xor objLayer.Lineweight = acLnWt050 Then
- MsgBox "Sluoksnis: '" & objLayer.Name & "' tvarkoj"
- Else:
- objLayer.Color = acRed
- objLayer.Linetype = "Continuous"
- objLayer.Lineweight = acLnWt050
- objDrawingObject.Update
- MsgBox "Sluoksnis: '" & objLayer.Name & "' pertvarkytas"
- End If
- Else:
- MsgBox "Nera Konturo."
- End If
-
-
-
-
- ' If "" = strLayerAsys Then 'Exit Sub ' exit if no name entered
- ' On Error Resume Next ' handle exceptions inline
- ' Set objLayer = ThisDrawing.Layers(strLayerAsys)
-
- ' If objLayer.Color = acGreen Xor objLayer.Linetype = "CENTER" Xor objLayer.Lineweight = acLnWt025 Then
- ' MsgBox "Sluoksnis: '" & objLayer.Name & "' tvarkoj"
- ' ElseIf objLayer.Color <> acGreen Xor objLayer.Linetype <> "CENTER" Xor objLayer.Lineweight <> acLnWt025 Then
- ' objLayer.Color = acGreen
- ' objLayer.Linetype = "CENTER"
- ' objLayer.Lineweight = acLnWt025
- ' MsgBox "Sluoksnis: '" & objLayer.Name & "' pertvarkytas"
- ' End If
- ' Else: MsgBox "Nera asiu"
- ' End If
-
-
- ' If "" = strLayerMatmenys Then 'Exit Sub ' exit if no name entered
- 'On Error Resume Next ' handle exceptions inline
- ' Set objLayer = ThisDrawing.Layers(strLayerMatmenys)
- ' If objLayer.Color = acBlue Xor objLayer.Linetype = "Continuous" Xor objLayer.Lineweight = acLnWtByLwDefault Then
- ' MsgBox "Sluoksnis: '" & objLayer.Name & "' tvarkoj"
- ' ElseIf objLayer.Color <> acBlue Xor objLayer.Linetype <> "Continuous" Xor objLayer.Lineweight <> acLnWtByLwDefault Then
- ' objLayer.Color = acBlue
- ' objLayer.Linetype = "Continuous"
-
- ' objLayer.Lineweight = acLnWtByLwDefault
- '' MsgBox "Sluoksnis: '" & objLayer.Name & "' pertvarkytas"
- ' End If
- '' Else: MsgBox "ner gaidze"
-
- '' End If
-
-
-
- ' ElseIf ("" <> strLayerAsys) And ("" <> strLayerKonturas) And ("" <> strLayerMatmenys) Then
- ' MsgBox "Brezinyje privalo buti trys sluoksniai: Asys, Konturas, Matmenys. Prasome pertvarkyti brezini"
- 'End If
- End Sub
|