automatischer Zellbezug mit VBA in Zelle
#31
also hier meine Beispieldatei! 

du musst die Funktion auf deine Tabelle anpassen!
Top
#32
Hey!

Das ist cool! Gefällt mir gut.

Vielen lieben Dank! Smile :18:
Top
#33
Funktioniert alles wie es soll?
Top
#34
Hey,

ja es funktioniert sehr gut. Danke.

Eine Kleinigkeit vielleicht noch.

Anstatt 
Code:
Range("C3:R84").Select 'Diesen Bereich musst du anpassen!


wäre es schön, wenn er xlLastCell nutzen würde und je nachdem wie viele Einträge vorhanden sind, mir diese einfügt.

Mit etwas in Richtung:
Code:
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
hört er mir trotzdem in Zeile 84 auf. Der wohl letzten aktiven Zelle?

Wie kann ich ihm sagen er soll es so lange runterziehen bis keine Werte mehr übertragen werden? Smile

LG
Top
#35
Das müsste über einen Umweg passieren! Erst müsste gezogen werden, soweit bis auf jedem Fall alle Werte übertragen sind und dann aus den Zeilen in denen keine Werte sind die Formeln gelöscht werden! 

Oder 

Es muss bei jedem Bezugswechsel das Angeknüpfte Blatt geöffnet werden und die letzte Zeile abgefragt werden...
Top
#36
Hallo Jules,

nimm mal diesen Code
Code:
Sub test()
MsgBox Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Address
End Sub

schreib irgendwo was in eine Zelle, klicke A1 an und führe den Code aus. Schreib was woanders hin, und nochmal usw.

Zitat:Es muss bei jedem Bezugswechsel das Angeknüpfte Blatt geöffnet werden und die letzte Zeile abgefragt werden...
In einer offenen Datei muss man dazu kein Blatt öffnen Smile Es reicht, wenn man sich auf das Blatt bezieht, im Prinzip so:
Code:
… Sheets("Tabelle2").Range("A1", Sheets("Tabelle2").Range("A1").SpecialCells(xlLastCell)).Address
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#37
Wunderbar. Klappt soweit alles!

Trotz aller Müh, werde ich wohl langfristig doch die komplette VBA-Lösung hernehmen. Bietet mir mehr Möglichkeiten

Code:
Dim shname As String
shname = Tabelle1.Range("Monat").Value

   Sheets("Übersicht").Select
   Range("C2").FormulaR1C1 = shname
   Range("B4").FormulaR1C1 = "=" & shname & "!R[1]C[9]"
   Range("C4").FormulaR1C1 = "=" & shname & "!R[1]C[2]"
   Range("D4").FormulaR1C1 = "=" & shname & "!R[1]C[8]"
   Range("E4").FormulaR1C1 = "=" & shname & "!R[1]C[9]"
   Range("F4").FormulaR1C1 = "=" & shname & "!R[1]C[16]"
   Range("G4").FormulaR1C1 = "=" & shname & "!R[1]C[16]"
   Range("H4").FormulaR1C1 = "=" & shname & "!R[1]C[17]"
   Range("I4").FormulaR1C1 = "=" & shname & "!R[1]C[17]"
   Range("J4").FormulaR1C1 = "=" & shname & "!R[1]C[18]"
   Range("K4").FormulaR1C1 = "=" & shname & "!R[1]C[18]"
   Range("L4").FormulaR1C1 = "=" & shname & "!R[1]C[18]"
   Range("M4").FormulaR1C1 = "=" & shname & "!R[1]C[18]"
   Range("B4:M4").Select
   Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
   Selection.FillDown


Jetzt bin ich gerade allerdings dran mit Checkboxen für den jeweiligen Monat zu arbeiten.

Die Idee dabei war folgende:

Code:
Private Sub CheckBox1_Click()
letztespalte = Sheets("Übersicht").Cells(4, Columns.Count).End(xlToLeft).Column
shname = Tabelle1.Range("Monat").Value

 If CheckBox1.Value = True Then
    Sheets("Übersicht").Cells(2, letztespalte + 1).Formula = "Januar"
Sheets("Übersicht").Cells(4, letztespalte + 1).FormulaR1C1 = "=" & shname & "!R[1]C[9]"


 
 Else


Dim Such
    Do
      Set Such = Worksheets("Übersicht").UsedRange.Find("Januar")
      If Not Such Is Nothing Then Such.EntireColumn.Delete
    Loop Until Such Is Nothing
    End If
End Sub


Jetzt frage ich mich allerdings, wie ich ihm sage, dass er auch hier die Formel bis zum Ende ziehen soll
Sheets("Übersicht").Cells(4, letztespalte + 1).FormulaR1C1 = "=" & shname & "!R[1]C[9]"



Steh gerade komplett auf dem Schlauch. Denn:
Code:
Range("B4:M4").Select
   Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
   Selection.FillDown


Funktioniert ja hier nicht. Ich kann ja keine wirkliche SelectionRange bilden?!

:16:
Top
#38
Hallo Jules,

bisschen sollte dabei "meine Massagebox" helfen. Die gibt doch die Adresse aus, entsprechend kannst Du auch sowas mit einer entsprechenden String-Variable nehmen:

strAdresse = …
Range(strAdresse).FillDown

Selectieren brauchst Du auch nicht und wenn Du wieder auf einem anderen Blatt sein solltest, na, das hatten wir ja schon Smile.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#39
@schauan

Es ging doch darum alle Daten aus einem geschlossenen Arbeitsblatt in einem Dateipfad zu importieren!??? Und wenn diese Datei geschlossen ist kann ich doch das Ende der Daten nicht erfassen... Oder?
Top
#40
Guten Morgen,

also langsam bin ich komplett durcheinander.

Unbeachtet der Tatsache, dass es sich wie Frogger sagt um ein geschlossenes Arbeitsblatt handelt.


Vielleicht kann Schauan mir nochmal sagen, wie er sich die Formel vorstellt, damit er die Formel auch an richtiger Stelle bis unten zieht:

Code:
letztespalte = Sheets("Übersicht").Cells(4, Columns.Count).End(xlToLeft).Column

If CheckBox1.Value = True Then
Sheets("Übersicht").Cells(2, letztespalte + 1).Formula = "Januar"

Sheets("Übersicht").Cells(4, letztespalte + 1).FormulaR1C1 = "=" & shname & "!R[1]C[9]"

strAdresse = Sheets("Übersicht").Cells(4, letztespalte + 1).Address
Range(strAdresse).FillDown

So nämlich nicht  :22:
Top


Gehe zu:


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