vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Methode Range für das Objekt _Worksheet fehlgeschlagen (Laufzeitfehler 1004) 
Autor: Schachspieler
Datum: 13.01.19 21:21

Ich bitte um Erklärung, wofür im folgenden Code ...

Dim varSiegerspalte
Dim shCL As Worksheet
Set shCL = Workbooks(strDateiName).Sheets("UEFA")
varSiegerspalte = shCL.Range("tbl_CL[Sieger]").Column

... der Ausdruck in den eckigen Klammern steht. (Die 4. Codezeile erzeugt Fehler.) Ist es ein Bereichsname? Ein Suchtext? Oder? Diese Syntax ist mit nicht bekannt.

Im EXCEL-Tabellenblatt befindet sich eine Tabelle mit einer Kopfzeile; dem gesamten Bereich AUSSER der Kopfzeile habe ich den Namen "tbl_CL" vergeben. In einer Zelle der Kopfzeile steht als Überschrift der Text Sieger. Die Zelle ist als Standard formatiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Methode Range für das Objekt _Worksheet fehlgeschlagen (Laufzeitfehler 1004) 
Autor: Souffleurlos
Datum: 13.01.19 22:14

Hallo,
eine Sheet, Worksheet kennt keine Eigenschaft Column! Vielmehr aber eine Aufzählung Columns!

varSiegerspalte = shCL.Range("tbl_CL[Sieger]").Columns(Nr_der_Spalte)

Wobei ich vorher die Zieltabelle als ActiveSheet Selektiert hätte.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Methode Range für das Objekt _Worksheet fehlgeschlagen (Laufzeitfehler 1004) 
Autor: Schachspieler
Datum: 14.01.19 10:36

Hallo,
zunächst besten dank für Ihre Antwort.

Wnn ich Ihre Antwort

varSiegerspalte = shCL.Range("tbl_CL[Sieger]").Columns(Nr_der_Spalte)

richtig verstehe, müsste ich in .Columns(Nr_der_Spalte) die Spaltennummer explizit angeben, aber dann würde die Variable varSiegerspalte ja genau diesen (angegebenen) Wert erhalten.

Der Sinn der Codezeile

varSiegerspalte = shCL.Range("tbl_CL[Sieger]").Column

sollte aber sein, jene SPALTE zu ERMITTELN, in welcher die Überschrift Sieger steht. (Die Datei mit der Tabelle wird aus einem externen Verweis geladen, und hier kann man nicht sicher sein, dass dass die besagte Spalte immer gleich plaziert ist.)

Noch immer ist mir aber die Syntax Range("tbl_CL[Sieger]") unverständlich; und das ist mein Hauptproblem. Was wird in der [...]-Klammer übergeben? Ein Bereichsname in der Mappe oder ein Text, nach dem gesucht werden soll?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Methode Range für das Objekt _Worksheet fehlgeschlagen (Laufzeitfehler 1004) 
Autor: Souffleurlos
Datum: 15.01.19 16:43

Hallo Schachspieler

Die Spaltenüberschriften in den Columns sind keine speziellen Objekte von Excel, sondern Zells, somit ein Range-Objekt.
Um die Spaltenüberschriften zu prüfen, ob eine der Zells den Wert: "Sieger" hat und angenommen, die Spaltenüberschriften befinden sich tatsächlich in der ersten Row (Zeile) der Tabelle dann würde eine kleine Funktion diese Column-Number zurückgeben:

Private Function GetSpezialColumn(Byval sColTitle As String, Optional Byval _
  ByRow As Long = 1) As Long
   Dim oR As Excel.Range
   Dim nCol As Long
 
   ActiveSheet.Rows(ByRow).Select
   For Each oR In Application.Selection
      nCol = nCol + 1   
      If Vartype(oR) = 8 Then 'String
         If Ucase(oR.Value) = Ucase(sColTitle) Then
             GetSpezialColumn = nCol : Exit Function
         End If
      End If
   Next
End Function
Aufruf dann: GetSpezialColumn("Sieger") wenn Zeile 1 ist oder
GetSpezialColumn("Sieger", 2) wenn die Überschriften in der 2. Zeile stehen usw

Beitrag wurde zuletzt am 15.01.19 um 16:46:14 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel