Clever-Excel-Forum

Normale Version: Const strPath und Range
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

wahrscheinlich nur eine kurze Frage, aber ich komme gerade nicht weiter:

Ich habe die Range für "Pfad" und "Blattname" bereits unter Namen definiert. Jetzt würde ich sie gerne hier nutzen... - Klappt aber nicht...
Code:
Option Explicit

Const strPathFile As String = "Tabelle1.Range(Pfad)"
Const strSheet As String = "Tabelle1.Range(Blattname)"


Wenn ich anstatt "Pfad" den richtigen Pfad angebe (C:\Bla\Datei.xlsm) geht es natürlich. Aber es muss doch möglich sein den Pfad und Blattnamen aus einer Zelle zu lesen?

Danke für Eure Hilfe.

VG
Hallo,

Zitat:Aber es muss doch möglich sein den Pfad und Blattnamen aus einer Zelle zu lessen?
Klar, ist das möglich, aber nicht wenn du die Variable als Konstante deklarierst. Außerdem gehören diese nicht in Anführungszeichen.
Hi Matthias,

wie muss ich dann an die Geschichte rangehen?
Hier mal mein Script:

Code:
Option Explicit

Const strPathFile As String =
Const strSheet As String =

Public Sub Main()
   Dim wkbBook As Workbook
   Dim blnTMP As Boolean
   On Error GoTo Fin
   Application.ScreenUpdating = False
   If fncFileUse(strPathFile) = True Then blnTMP = True
   Set wkbBook = GetObject(strPathFile)
   With ThisWorkbook
       wkbBook.Worksheets(strSheet).Copy After:=.Worksheets(.Worksheets.Count)
       If blnTMP = False Then wkbBook.Close False
   End With
Fin:
   Application.ScreenUpdating = True
   If Err.Number <> 0 Then MsgBox "Error: " & _
       Err.Number & " " & Err.Description
   Set wkbBook = Nothing
End Sub
Function fncFileUse(strFile As String) As Boolean
   On Error Resume Next
   Open strFile For Binary Access Read Lock Read As #1
   Close #1
   If Err.Number <> 0 Then
       fncFileUse = True
       Err.Clear
   End If
End Function

Vielen Dank!
Hallo,

deine beiden Variablen sind ja immer noch Konstanten und keine Variablen. Zur Deklaration von Variablen siehe [url=
Dateiupload bitte im Forum! So geht es: Klick mich!
13[/url].

So wie du die Variable definierst, erhält sie nicht den Inhalt der Zelle. Wenn du den haben willst, brauchst du keine Anführungszeichen, sondern am Ende ein .Value
Hi,

das ist richtig. Sie sind Konstanten, da ich sie weiter unten für die Funktion benötige.
Wenn ich es in Variablen umänder, funktioniert es nicht mehr ..

Oder übersehe ich etwas? Angel
Zitat:Wenn ich es in Variablen umänder, funktioniert es nicht mehr ..
Warum sollte das nicht mehr funktionieren? Konstanten und Variablen unterscheiden sich nur dadurch, dass du den Wert von Variablen zur Laufzeit ändern kannst, den von Konstanten nur während der Programmierung. Wenn du aber den Wert der Zelle einlesen willst, darfst du keine Konstante verwenden, da du während der Programmierung den Wert der Zelle noch gar nicht kennst.
Matthias, ich danke Dir ! Smile

Stand wohl echt etwas auf dem Schlauch.
Es funktioniert einwandfrei. - Jedoch auch ohne .value

Code:
Dim strPathFile As String
strPathFile = Tabelle1.Range("Pfad").Value
Dim strSheet As String
strSheet = Tabelle1.Range("Blattname").Value


LG
Ja, da .Value die Default-Eigenschaft ist. Allerdings schreibe ich persönlich immer .Value hin - finde das erleichtert einiges (und ganz nebenbei mache ich mich unabhängig, falls Microsoft die Default_Einstellung mal ändern solte)