Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Const strPath und Range
#1
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
Antworten Top
#2
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.
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#3
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!
Antworten Top
#4
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
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#5
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
Antworten Top
#6
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.
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
Antworten Top
#7
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
Antworten Top
#8
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)
Viele Grüße,
Matthias

-------------------------------------------------------------------------------------------

Man muß nicht alles wissen, man muß nur wissen, wie man die Lösung findet.
[-] Folgende(r) 1 Nutzer sagt Danke an Matthias84 für diesen Beitrag:
  • jules
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste