2014-09-24 53 views
0

我正在写一个VBA代码来读取一些文本文件,我希望直接从Excel中的单元格读取文件名。 我用下面的代码从单元格读取常量

Sub ImportFile() 
Const textFilePath As String = "C:\Desktop\" 
Const textFileName As String = "File1.txt" 
Const newTextFileName As String = "NewFile1.txt" 

我想有像

Sub ImportFile() 
Const textFilePath As String = Range("A2").value 
Const textFileName As String = Range("A3").value 
Const newTextFileName As String = Range("A4").value 

我尝试不同的组合,但它似乎并不像指派的想法不变的单元格值,任何工作?

感谢

P.S我不知道如何编写代码以正确的方式在这个网站,我试过的代码行之前添加4位,但似乎没有工作,任何想法,为什么?

+0

据我所知,你不能将一个变量值赋给一个常量。你可以做的最接近的是声明一个变量,然后将范围值赋给变量。 – Dave 2014-09-24 08:20:13

回答

0

我不认为你可以从一个范围内分配一个常量,因为范围值可能会在代码执行过程中发生变化。我想你的声明在此位的代码:

Option Explicit 

Sub ImportFile() 
Const textFilePath As String = Range("A2").Value 
Const textFileName As String = Range("A3").Value 
Const newTextFileName As String = Range("A4").Value 
End Sub 

和Debug..Compile在IDE如果你改变你的代码

Option Explicit 

Sub ImportFile() 
Dim textFilePath As String 
Dim textFileName As String 
Dim newTextFileName As String 
textFilePath = Range("A2").Value 
textFileName = Range("A3").Value 
newTextFileName = Range("A4").Value 
End Sub 
我得到这个错误

enter image description here

你会发现它编译好。

除非你正在谈论“通用(物理)常数”,比如PI,c或G,常量很少是常量。我发现有一个命名范围,可能在一个隐藏的表格上,并且从该命名范围填充一个变量,使用户更容易维护,而且几乎没有VBA经验。当然,你需要跟踪那些“常量”来维护它们,但至少你不需要VBA经验。

0

你不能在vba中这样做,因为你的常数变量可能会改变。不过,我认为你想要声明和初始化你的路径变量,以便稍后如果你决定改变它们,你可以在变量初始化的同一行中的一个地方做到这一点。所以如果我是你,我会使用类似于

 Option Explicit 

     sub macro() 

     Dim FILEPATH As String: FILEPATH = Range("A1").Value 

     MsgBox FILEPATH 

     end sub