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.

Daten aus anderer Mappe ziehen VBA
#1
Star 
Hallo liebes Clever Team,

ich möchte gerne die Zellen aus meiner aktuellen Tabelle, mit den Zellen aus einer anderen Mappe abgleichen. Hier ein Code, den ich bereits versucht hatte, bei dem leider overflow angezeigt wird :( woran kann das liegen? Ich möchte mit "farbe" die Zellfarbe herausfinden.

Vielen Dank für jede Mithilfe!

Code:
Option Explicit

Dim farbe As Integer
Dim Wksdaten As worksheet
dim wkbdaten as workbook
Dim rng As Range

Sub anderemappe()

On Error GoTo FEHLER
'
With Application
   .ScreenUpdating = False
   .EnableEvents = False
   .Calculation = xlCalculationManual
End With
'
   Workbooks.Open "L:\Pfad\Name.xlsm"
Set wkbDaten = Workbooks("Name.xlsm")
Set Wksdaten = wkbDaten.Sheets("Tabelle2")

FEHLER:
With Application
   .ScreenUpdating = True
   .EnableEvents = True
   .Calculation = xlCalculationAutomatic
End With

farbe = Wksdaten.Cells(i, 2).Interior.Color
Antworten Top
#2
Hallo,

nimm mal Long anstatt Integer

Gruiß Werner
[-] Folgende(r) 1 Nutzer sagt Danke an Werner.M für diesen Beitrag:
  • SiriKlaus
Antworten Top
#3
Danke, leider nicht. Nun erscheint der Laufzeitfehler 91 Objektvariabel oder With Block Variabel nicht gesetzt. Der Fehler liegt nach F8 in der Zeile, in der "farbe" bestimmt wird. Darf ich denn wksdaten einfach so mit cells(x,y).interiorcolor zusammensetzen? Wenn nein, wie kann man den Farbcode anders ausfindig machen?
Antworten Top
#4
Moin,
2 Dinge sind mir aufgefallen:
  1. Die Variable i ist nicht deklariert
  2. Es gibt keine Zelle B0 (B null).
Ich weiß, ein wenig Denksport, aber das baut ungemein auf.  :05:
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • SiriKlaus
Antworten Top
#5
Hi,

früher hieß das bei 
Range("I1").Interior.ColorIndex

geht das heute ohne?

Sorry hab schon lange nix mehr mit Farben gemacht, damals gabs rund 60 Farben, heute soll es ja 16.000 geben.
Zum Testen würde ich farbe ohne Dimension dimenesionieren, (wie das klingt)
Einfach
Dim farbe
mit einer schleife alle testen, kurz vor ende anhalten - geht auch per code - und guggen im Lokalfenster, ob die Variable immer noch integer is oder schon long oder was ganz anderes.
[-] Folgende(r) 1 Nutzer sagt Danke an Wastl für diesen Beitrag:
  • SiriKlaus
Antworten Top
#6
Moin Wastl,
ich denke, dass diese Antwort eine schlüssige Lösung bietet: https://answers.microsoft.com/en-us/offi...57e1ad1d17 (Ich denke, dass es weit weniger Indizes für diese Color-Weisungen gibt).
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • SiriKlaus
Antworten Top
#7
Moin GMG-CC

Danke für den Link.

da steht was von RGB(,,)
also kann das von (0,0,0) bis (256,256,256) sein, gibt also 16.974.593 (257*257*257) verschiedene Farbnuancen, das übersteigt wohl die Variable Integer.
Oda?

Ich habe eine Zelle gelb markiert und dann im Direktbereich abgefragt mit:
Code:
? selection.Interior.Color
und als Antwort bekommen:
65535
[-] Folgende(r) 1 Nutzer sagt Danke an Wastl für diesen Beitrag:
  • SiriKlaus
Antworten Top
#8
Moin Wastl,
na ja, dicht daneben ist auch vorbei. :100: Der Form halber und der Mitleser wegen: 256 ist zwar eine der "magic numbers" in der EDV weil 2^8. ABER: die Null zählt mit, darum ist 255 die höchstmögliche Zahl eines Farbbereichs. Sprich: 255*255*255 = 16.581.375 was gewiss auch eine ausreichende Anzahl von Möglichkeiten darstellt.  Exclamation
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
[-] Folgende(r) 1 Nutzer sagt Danke an GMG-CC für diesen Beitrag:
  • SiriKlaus
Antworten Top
#9
Vielen Dank für Eure Anmerkungen! Der Fehler scheint nicht an den Farben zu liegen.

Die Farben habe ich mir auch nochmal genauer angesehen, alle Zahlen als double deklariert, aber dieses mal wksdaten und wkbdaten ausgeschrieben. Den i-Fetzen habe ich nun der einfachheithalber rausgenommen und mit einer 1 ersetzt (gehörte zu einer anderen Schleife).

Code:
farbe = Workbooks("name.xlsm").Sheets("tabelle2").Cells(1, 2).Interior.Color

obige zeile ausgeschrieben funktioniert, untere (alte) funktioniert nicht.

Code:
Set wkbDaten = Workbooks("name.xlsm")
Set wksdaten = wkbDaten.Sheets("tabelle2")

farbe = wksdaten.cells(1,2).interior.color

wkbdaten wurde als workbook, wksdaten als worksheet deklariert. Das Problem liegt am "Verschachteln", wenn ich mich nicht irre? Für meine Zwecke sollte es reichen...


Für Mitleser der vollständige code.
Code:
Option Explicit

Dim farbe As Double

Sub FarbcodeEinerZelleAusAndererMappe()

On Error GoTo FEHLER

'Andere Mappe öffnen

With Application
   .ScreenUpdating = False
   .EnableEvents = False
   .Calculation = xlCalculationManual
End With
'
   Workbooks.Open "L:\Pfad\Name.xlsm"

FEHLER:
With Application
   .ScreenUpdating = True
   .EnableEvents = True
   .Calculation = xlCalculationAutomatic
End With

'Farbcode der Zelle aus anderer Mappe ermitteln
farbe = Workbooks("name.xlsm").Sheets("tabelle2").Cells(1, 2).Interior.Color

'Zelle in dieser Mappe damit färben 
cells(3,4).interior.color = farbe

End Sub
Antworten Top
#10
Hi,

teste mal das Makro (Pfad natürlich anpassen!):
Option Explicit

Sub FarbcodeEinerZelleAusAndererMappe()
   Dim farbe As Long
   
   On Error GoTo FEHLER
   
   With Application
      .ScreenUpdating = False
      .EnableEvents = False
      .Calculation = xlCalculationManual
   End With
   
   'Andere Mappe öffnen 
   Workbooks.Open "C:\temp\Name.xlsb"
   
   'Farbcode der Zelle aus anderer Mappe ermitteln 
   farbe = ActiveWorkbook.Sheets("tabelle2").Cells(1, 2).Interior.Color
   ActiveWorkbook.Close False
   
   'Zelle in dieser Mappe damit färben 
   '   ThisWorkbook.Activate 
   Cells(3, 4).Interior.Color = farbe
   
FEHLER:
   With Application
      .ScreenUpdating = True
      .EnableEvents = True
      .Calculation = xlCalculationAutomatic
   End With
   
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • SiriKlaus
Antworten Top


Gehe zu:


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