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.

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

du musst die Funktion auf deine Tabelle anpassen!
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#32
Hey!

Das ist cool! Gefällt mir gut.

Vielen lieben Dank! Smile :18:
Antworten Top
#33
Funktioniert alles wie es soll?
Eine Menge reden, aber nichts sagen können viele...
Antworten 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
Antworten 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...
Eine Menge reden, aber nichts sagen können viele...
Antworten 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)
Antworten 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:
Antworten 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)
Antworten 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?
Eine Menge reden, aber nichts sagen können viele...
Antworten 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:
Antworten Top


Gehe zu:


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