我正在编写一个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 :(得分: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
在IDE中的Debug..Compile上我得到了这个错误
如果您将代码更改为
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
你会发现它编译好了。
除非您正在谈论"通用(物理)常数"例如PI,c或G,常量很少是常数。我发现有一个命名范围,可能在隐藏的工作表上,并填充该命名范围的变量,这使得用户很容易维护,几乎没有VBA经验。当然,你需要跟踪那些"常数"维持他们,但至少你不需要VBA经验。
答案 1 :(得分:0)
你不能在vba中这样做,因为你的常量变量可能会改变。但是,我认为您希望声明并初始化路径变量一次,以便稍后如果您决定更改它们,则可以在初始化变量的同一行中的一个位置执行此操作。所以,如果我是你,我会使用像
这样的东西 Option Explicit
sub macro()
Dim FILEPATH As String: FILEPATH = Range("A1").Value
MsgBox FILEPATH
end sub