2014-09-24 76 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