我有一个VBA宏,可以将数据作为XML打印出来。我试图找出一种方法来编辑我的宏,以便在循环期间跳过一行,如果某个单元格值为“OFF”。由于我不擅长编写VBA代码,我想保持这个简单,所以我查找vba宏并调整它们,直到我得到所需的结果,所以对我提供的代码中的任何错误表示道歉。这是我现在的宏,但我一直遇到不匹配类型错误。对于XML的每一行,我旁边有一个单元格,可以设置为“ON”或“OFF”值。感谢大家的帮助!
Sub Export_tvXML()
Dim XMLFileName As String
Dim MetaFileName1 As String
Dim MetaFileName2 As String
Dim output1 As String
Dim output2 As String
Dim range1 As Range
Dim range2 As Range
Set range1 = Sheets("XML").Range("A2:E84")
Set range2 = Sheets("XML").Range("A86:E168")
MetaFileName1 = Sheets("TV_Info").Range("G5")
MetaFileName2 = Sheets("TV_Info").Range("G6")
XMLFileName = MetaFileName1 & ".xml"
For Each r In range1.Rows
If Cells(r, 6).Value = 1 Then
For Each c In r.Cells
output1 = output1 & c.Value
Next c
output1 = output1 & vbNewLine
End If
Next r
Open XMLFileName For Output As #1
Print #1, output1
Close #1
XMLFileName = MetaFileName2 & ".xml"
For Each r In range2.Rows
For Each c In r.Cells
output2 = output2 & c.Value
Next c
output2 = output2 & vbNewLine
Next r
Open XMLFileName For Output As #2
Print #2, output2
Close #2
End Sub
至于电子表格方面,我已经模拟了XML,宏只会在格式化时输出值。这是一个参考截图。因此,任何设置为关闭的行,我希望宏跳过该行并移动到下一行以输出它。
答案 0 :(得分:0)
我认为你的问题在以下几行:
If Cells(r, 6).Value = 1 Then
您正在针对数字(1)测试单元格值,但您的意思是针对字符串值进行测试,这就是您遇到类型不匹配的原因。
尝试将其更改为以下内容:
If StrComp(Cells(r, 6).Value,"ON")=0 Then
StrComp是比较两个字符串的有用函数,其中包括使比较不区分大小写的选项。在这种情况下,两个字符串是第6列中连续单元格的内容,字符串为" ON"。