Is variable defined?
问:当
我在一个文本文件中搜索一个模式,当它找到它时,它会检索该模式的位置(左边的字符长度)。每次找到模式时都会发生这种情况。当它没有找到这个模式时,它应该分配一个变量(例如:80)。
我在网上找到的解决方案(
文本文件的格式如下:
1 2 3 4 | 2012 2011 title 1 123,342 123,435 title 2 234,431 645,234 title 3 324,234 - |
脚本读取每一行并将数据提取到列中(基于年份)。它通过找到一个模式(
下面是我现在的代码摘录:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | **Top of document** Dim re As Object, matches As Object, match As Object, submatch Dim iNoColumns As Integer, ii As Integer, NumberMatch As Variant Dim sLine As String ** ReDim iColumns(1 To iNoColumns) As Integer Set re = CreateObject("vbscript.regexp") re.Pattern =" [0-9]" re.IgnoreCase = True re.Global = True Set matches = re.Execute(sLine) For Each match In matches NumberMatch = match Next If VBA.InStr(1, sLine, NumberMatch) > 0 Then iColumns(1) = VBA.InStr(1, sLine, matches(0).Value) For ii = 2 To iNoColumns If matches(ii - 1).Value Is Nothing Then iColumns(ii) = 70 + (ii * 10) Else iColumns(ii) = VBA.InStr(iColumns(ii - 1) + 1, sLine, matches(ii - 1).Value) Debug.Print"Column" & ii &" starts at:" & iColumns(ii) End If Next ii End If |
主要是关于EDCX1〔4〕部分。这是一个不起作用的部分,我不知道该怎么做来修复它。除了匹配(1)或匹配(2)或匹配(3)(等)不存在之外,代码的其余工作非常有效。
如果我必须定义或解释上面使用的任何变量,请告诉我。
sLine 是当前行(使用Scripting.FileSystemObject 在文本文件中读取)iNoColumns 是列数(这决定了需要多少个匹配项:如果有2列,脚本将查找两个匹配项(匹配项(0)和匹配项(1))。iColumns(ii) 是每列的长度;由找到匹配的位置决定。
我试过这个stackoverflow解决方案(及其所有组合),也试过
VBA(源):
1 2 3 4 5 6 | | Type | Test | Test2 | Numeric (Long, Integer, Double etc.) | If obj.Property = 0 Then | | Boolen (True/False) | If Not obj.Property Then | If obj.Property = False Then | Object | Is obj.Property Is Nothing Then | | String | If obj.Property ="" Then | If LenB(obj.Property) = 0 Then | Variant | If obj.Property = Empty Then | |
或恩德兰解决方案(这篇文章)。
javascript(源):
1 2 3 | if(typeof variable_here === 'undefined'){ // your code here. }; |
或
1 2 3 | if(! variable_here){ // your code here. }; |
菲顿(来源):
1 2 3 4 5 6 | try: thevariable except NameError: print"well, it WASN'T defined after all!" else: print"sure, it was defined." |
或(源)要检查局部变量的存在:
1 2 | if 'myVar' in locals(): # myVar exists. |
要检查全局变量的存在:
1 2 | if 'myVar' in globals(): # myVar exists. |
要检查对象是否具有属性:
1 2 | if hasattr(obj, 'attr_name'): # obj.attr_name exists. |
其他:检查变量是否在python中定义的简单方法?如何检查变量是否存在?.
1 2 3 | For Each match In matches NumberMatch = match Next |
首先,这真的是你想要的吗?您是否只希望设置EDOCX1中的最后一个对象(无论前面的对象是什么)?
其次,执行以下操作:
1 2 3 | dim matches As Variant If matches(ii - 1) ="" Then |
这应该可以解决这个问题(您可能需要包含一个或语句来检查它是否等于0)。