Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将变量传递到左侧(字符串,VariableHere)无效_Vba_Excel - Fatal编程技术网

Vba 将变量传递到左侧(字符串,VariableHere)无效

Vba 将变量传递到左侧(字符串,VariableHere)无效,vba,excel,Vba,Excel,我有一个数据导入文件,上面的日期没有逗号,即2015年1月1日。Excel不会将此视为日期,我需要使用这些日期查找其他日期,即日期+行程长度以查找行程的最后一天,等等 我正试图使用VBA来完成这项工作,并将逻辑放下,但我遇到了一个错误 我取日期2015年1月1日的长度,5个右字符2015,整个长度的左边减去5个右字符1,然后用逗号插入这些变量:Leftvalue-5&,&Rightvalue,5 我正在使用以下代码: 'correct date from JANUARY 1 2000 t

我有一个数据导入文件,上面的日期没有逗号,即2015年1月1日。Excel不会将此视为日期,我需要使用这些日期查找其他日期,即日期+行程长度以查找行程的最后一天,等等

我正试图使用VBA来完成这项工作,并将逻辑放下,但我遇到了一个错误

我取日期2015年1月1日的长度,5个右字符2015,整个长度的左边减去5个右字符1,然后用逗号插入这些变量:Leftvalue-5&,&Rightvalue,5

我正在使用以下代码:

    'correct date from JANUARY 1 2000 to JANUARY 1, 2000 so excel can recognize as date

    LengthTrpDpt = Len(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol)) 'length of date
    LengthRightTrpDPt = Right(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol), 5) 'finds right 5 of date " 2015"
    NewListedDate = Left(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol), LengthTrpDpt - 5) & ", " & LengthRightTrpDPt
问题在于NewListedDate变量。我可以将零件长度TRPDPT-5更改为一个数字,它工作正常。由于某种原因,我这里不能有一个等式。我尝试在单独保存的变量LengthMath=LengthTrpDpt-5中执行该等式,并使用LengthMath代替,但这也不起作用

LengthTrpDpt工作正常,MsgBox的编号正确。有什么想法吗?谢谢

您只需将日期字符串拆分为三个部分,然后按照您的意愿将它们重新组合在一起:

Dim a
a = Split(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol))
NewListedDate = a(0) & " " & a(1) & ", " & a(2)
您只需将日期字符串拆分为三个部分,然后按照您的意愿将它们重新组合在一起:

Dim a
a = Split(wb1.Sheets("BL Import").Cells(ioi, TrpDepCol))
NewListedDate = a(0) & " " & a(1) & ", " & a(2)
在类似日期的文本列上使用

with worksheets("Sheet1").columns(1)  '<-change this to reflect the actual worksheet and column
    .TextToColumns Destination:=.cells(1,1), DataType:=xlFixedWidth,  FieldInfo:=Array(0, 3)
end with
0告诉T2C它应该将所有内容放回原始列中。第三个是MDY

依我看,处理数字和日期总是比使用近似的字符串表示更好。

在类似日期的文本列上使用

with worksheets("Sheet1").columns(1)  '<-change this to reflect the actual worksheet and column
    .TextToColumns Destination:=.cells(1,1), DataType:=xlFixedWidth,  FieldInfo:=Array(0, 3)
end with
0告诉T2C它应该将所有内容放回原始列中。第三个是MDY


依我看,处理数字和日期总是比使用近似的字符串表示更好。

在od text-that-looks-like-dates列上使用t2c。这看起来很有希望,但我在使用了一段时间后会出错。底部的裂口到底是如何工作的?它是由字符串中的空格分隔的吗?那么a0=1月,a1=22,a2=2015年?谢谢是的。默认情况下,拆分根据空格字符进行分隔。这似乎是正确的做法,但我在“NewListedDate=a0&&a1&&a2”中遇到了一个错误。您遇到错误的日期有什么不同?错误是什么?在od text-that-looks-like-dates列中使用t2c。这看起来很有希望,但在玩了一段时间后,我发现了错误。底部的裂口到底是如何工作的?它是由字符串中的空格分隔的吗?那么a0=1月,a1=22,a2=2015年?谢谢是的。默认情况下,拆分根据空格字符进行分隔。这似乎是正确的做法,但我在“NewListedDate=a0&&a1&&a2”中遇到了一个错误。您遇到错误的日期有什么不同?错误是什么?我可以毫无错误地运行它,但它没有改变存储日期的列中的任何单元格2015年1月1日仍然是2015年1月1日,我不能将它们作为日期使用,例如,2015年1月1日+2=error非常奇怪。我在一列中的20个单元格上测试了它,该列保存了201年1月1日的示例字符串数据,它完全按照计划工作。我强烈怀疑您有前导/尾随空格或非中断空格和/或散布的非中断空格。没有使用frm的另一个反应似乎证实了这一点。我也测试了这个,它对我有效。这是一个很好的答案。我能够毫无错误地运行此操作,但它没有更改存储日期的列中的任何单元格2015年1月1日仍然是2015年1月1日,我无法将其作为日期使用,例如,2015年1月1日+2=error非常奇怪。我在一列中的20个单元格上测试了它,该列保存了201年1月1日的示例字符串数据,它完全按照计划工作。我强烈怀疑您有前导/尾随空格或非中断空格和/或散布的非中断空格。没有使用frm的另一个反应似乎证实了这一点。我也测试了这个,它对我有效。这是个好答案。