Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1700to1704
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Methode 'Cells' für das Objekt '_Global' fehlg.

Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 08:52:29
Sven
Moin zusammen,
ich nutze eine Funktion, mit der ich Spaltennummern und Spaltenbuchstaben umwandeln kann. Die habe ich, glaube ich, sogar aus diesem Forum:
Function gibSpaltenbuchstabe(intSpalte As Integer) As String
gibSpaltenbuchstabe = Left(Cells(1, intSpalte).Address(0, 0), 1 - (intSpalte > 26) - ( _
intSpalte > 702))
End Function
Das funktioniert eigentlich auch. Aber: Wenn ich die Arbeitsmappe mit
ActiveWindow.Visible = False
ausblende (da nur das Userform eine Rolle spielt), bekomme ich den Fehler
Die Methode 'Cells' für das Objekt '_Global' ist fehlgeschlagen.

Was ist hier los?
Danke und Grüße
Sven

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 09:00:21
Torsten
Hallo,
die Funktion braucht ein Tabellenblatt, um die Pruefung durchzufuehren. Ich habe eine aehnliche Sache, da bekomme ich auch diesen Fehler, wenn ich keine Tabelle (auch leer) offen habe.
Gruss
AW: Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 09:24:46
Daniel
Hi
Celle ohne weitere Angaben sucht die Zelle im aktiven Blatt.
Wenn kein Tabellenblatt aktiv ist, kommt der Fehler.
Auch hier hilft die vollständige Referenzierung, in diesem Fall am besten so:
ThisWorkbook.Worksheets(1).Cells(...
Gruß Daniel
AW: Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 13:45:32
Sven
Super, danke!
AW: Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 09:30:44
EtoPHG
Hallo Sven,
Ja warum wohl? Genau darum, weil das Fenster nicht mehr verfügbar ist und die Funktion unvollständig referenziert. So funktioniert es auch bei ausgeblendetem Fenster:
Function gibSpaltenbuchstabe(lngSpalte As Long) As String
gibSpaltenbuchstabe = Split(ThisWorkbook.Worksheets(1).Columns(ColIndex).Address(0, 0),":")0)
End Function
Gruess Hansueli
P.S. Mir wurde bis heute nicht klar, für was man eine solche Funktion für die VBA-Programmierung braucht!
Anzeige
oops, Typo! Korrektur
12.07.2019 09:32:02
EtoPHG

Function gibSpaltenbuchstabe(ColIndex As Long) As String
gibSpaltenbuchstabe = Split(ThisWorkbook.Worksheets(1).Columns(ColIndex).Address(0, 0), ":")(0)
End Function

AW: Methode 'Cells' für das Objekt '_Global' fehlg.
12.07.2019 13:49:50
Sven

P.S. Mir wurde bis heute nicht klar, für was man eine solche Funktion für die VBA-Programmierung braucht!
Hallo Hansueli,
ich habe es jetzt mit der absoluten Referenzierung hinbekommen.
Der Hintergrund: Ich bekomme nach einer ADO-Abfrage eine Tabelle aus einer Datenbank. Hier kann ich die Anzahl der Spalten in .Fields.Count finden. Um jetzt den Bereich zu bearbeiten, brauche ich den letzten Spalten-Buchstaben.
Grüße
Sven
Anzeige
Dazu brauchst du NICHT den Buchstaben...
12.07.2019 13:53:26
EtoPHG
sondern den Index (LONG), d.h. die Spaltennummer, Sven
Das genau meinte ich mit meiner Anmerkung :-)
In VBA mit Buchstaben zu referenzieren ist kontraproduktiv, denn der Interpreter wird dies Buchstaben wieder in Long-Werte für die Adressierung umrechnen!
Gruess Hansueli
AW: Dazu brauchst du NICHT den Buchstaben...
12.07.2019 14:56:28
Sven
Hallo Hansueli,
magst Du mir das an diesem Beispiel kurz erklären?
With ThisWorkbook.Worksheets("Copy")
myArr = .Range("A2:" & rowLetter(intAdoColumns) & .Range("A" & .Rows.Count).End( _
xlUp).Row)
End With
libo.List = (myArr)

In intAdoColumns steht die Anzahl der aus der Datenbank abgefragten Spalten.
Danke
Sven
Anzeige
AW: Dazu brauchst du NICHT den Buchstaben...
12.07.2019 15:15:20
EtoPHG
Hallo Sven,
bei mir würde das etwa so aussehen:
Dim myArr As Range
With ThisWorkbook.Worksheets("Copy")
Set myArr = .Range(.Cells(2, 1), _
.Cells(.Rows.Count, 1).End(xlUp).Offset(, intAdoColumns - 1))
' Debug:Display Address of Range, comment out if not needed
MsgBox myArr.Address
End With
Gruess Hansueli
AW: Dazu brauchst du NICHT den Buchstaben...
12.07.2019 16:22:59
Sven
Ah, so klappt es, danke.
Kleiner Exkurs für mich:
Warum klappt nur
libo.List = (myArr)

aber nicht
libo.List = myArr

?
Grüße und schönes Wochenende
Sven
Anzeige
Zu rudimentärer Codeschnipsel
12.07.2019 16:44:21
EtoPHG
Sven,
Das kann ich nur im Gesamtkontext des Codes beurteilen.
Mit solche Codefragmenten wäre das reine Wahrsagerei.
Gruess Hansueli
AW: Dazu brauchst du NICHT den Buchstaben...
12.07.2019 15:16:08
Daniel
Hi
beispielsweise, in dem du den Zellbereich über Range(Cells, Cells) beschreibst:
letzteZeile = .Cells(.Rows.Count, 1).end(xlup).Row
.Range(.Cells(2, 1), .Cells(letzteZeile, intAdoColumns))
oder mit .Cells.Resize:
letzteZeile = .Cells(.Rows.Count, 1).end(xlup).Row
.Cells(2, 1).Resize(LetzteZeile - 1, intAdoColumns)
Gruß Daniel

oder von links unten - nach rechts oben
12.07.2019 15:25:19
links
Sven,
etwas einfacher:
With ThisWorkbook.Worksheets("Copy")
Set myArr = .Range(.Cells(.Rows.Count, 1).End(xlUp), .Cells(2, intAdoColumns))
End With
Gruess Hansueli
Anzeige
AW: oder von links unten - nach rechts oben
12.07.2019 15:57:35
links
Hallo Hansueli,
das scheint bei Leerzeilen und -spalten nicht zu funktioneiren...
Wie bitte? Beweise: Beispielmappe laden!
12.07.2019 16:05:23
EtoPHG
Sven,
Funktioniert nur bei einer leeren Spalte 1 (A) nicht.
Sonst musst du schon den Beweis mit einer Beispielmappe antreten!
Gruess Hansueli

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige