Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Frage mit "range"





Frage

Hallo Leute, Ich hoffe ihr lacht mich nciht aus aber ich habe eine Frage die scheinbar sehr einfach ist, an der ich trotzdem scheitere. [b]Ich brauche den makro befehl der mir die nächste darunterliegende Zelle automatisch anwählt.[/b] vermutlich irgendwas mit range( blablabla +1) hab leider keine ahnung Vielen Dank David

Antwort 1 von Hajo_Zi

Hallo Davd,

Range(A1").Offset(1,0)=123

Gruß hajo

Antwort 2 von Davidrange

Hey vielen Dank,

aber leider funktionier das nicht.

im Grunde will ich, dass der cursor um ein kästchen nach unten wandert.

danke

Antwort 3 von rainberg

Hallo David,

dann so

Range("A1").Offset(1,0).Select

Gruß
Rainer

Antwort 4 von Hajo_Zi

Hallo David,

in VBA kann zu 99,9% auf select verzichtet werden.

Gruß hajo

Antwort 5 von Kauz1

Hallo David..
warum lachen... jeder hat mal angefangen!

syntax für Range : Range("A1) --- =Zelle A1
Range("A1:C3")= Zellbereich A1 oben links bis
C3 unten rechts

mit einer variablen: x=5
Range("A" & x) = Spalte A und Zeile des Inhalts von x
Also Zelle A5

Für einzelne Zellen ist folgendes vielleicht günstiger:

Syntax für Cells : Cells(1,1) = Zelle A1
Cells(3,1) = Zelle A3
mit Variablen x=5 Cells(3,x) =Zelle E3
Cells(x+1,1) =Zelle A6

Achtung: Bei Range wird zuerst die Spalte bezeichnet....
Bei Cells ist die erste Zahl die Zeile!

-------------------
Ich brauche den makro befehl der mir die nächste darunterliegende Zelle automatisch anwählt.
-------------------

Wann, nach welcher Aktion soll die darunterliegende Zelle gewählt werden?
Nach einer Eingabe mit <Enter> zum Beispiel läßt sich das ohne Makro einrichten:
Menue Extras.... Optionen.... Karte bearbeiten

Wenn es in einer bestimmten Situation geschehen soll, so muß das Makro von dem dazugehörigen Ereigniss gestartet werden.
z.B.: <Change> wenn sich ein Zellinhalt ändert.

Wenn das noch nicht reicht.... weiterfragen!
Vielleicht finden andere auch noch einen anderen Weg zum erklären.

Gruß Andreas

Antwort 6 von Davidrange

Vielen Dank Andreas, hajo und Rainer.

@Andreas. Die Aktion, die ausgeführt wird ist diese

Range("A1").Select

auf einem beliebigen sheet wird A1 ausgewählt

Selection.Copy
Das wird dann kopiert

Sheets("Sheet1").Paste Link:=True
und als Link auf dem sheet1 abgelegt. Und zwar an der Stelle wo der gerade Cursor ist.

jetzt möchte ich, das der Cursor um einen Zeile nach unten wandert, damit ich das nächste sheet nehmen kann um wiederum A1 auf sheet1 als Link abzulegen. Direkt unter dem ersten Link

Wenn jemand eine Idee hat dann vllt auch mal hier schauen.

https://supportnet.de/threads/1598745

Die Idee ist mir erst später gekommen. Ich konnte meinen ersten Post leider nicht mehr abändern... Sorry :)

Danke im vorraus
David

Antwort 7 von Kauz1

Hallo David...

wähle Tabelle Sheet1...
gehe in den VBA-Editor..
Wähle oben im rechten Pulldownfeld Worksheet aus....
Wähle im linken Pulldownfeld Change aus.

Dann sollte es so aussehen:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Trag dazwischen diesen Code ein.

a = ActiveCell.Row
b = ActiveCell.Column
Application.Goto reference:=Sheets("Sheet1").Cells(a+1, b), Scroll:=True

Damit sollte es funktionieren.

Gruß Andreas

Antwort 8 von davidrange

Vielen Dank

aber ohje

Ich check das net :'( ich kann das wasdu meinst nicht finden?

einen letzten Tipp? *fleh* :)

Danke

Antwort 9 von Kauz1

Hallo David...
der Code wird wie folgt eingebaut:

Alt +F11 drücken...
Es erscheint ein neues Fenster:
Es ist senkrecht zweigeteilt:
linke Seite sind die Tabellenblätter als Baum zu sehen.
Ein Doppelklick auf das Tabellenblatt mit Namen Sheet1

Wenn Du noch keinen Code eingebaut hast ist in der rechten breiteren Seite alles leer.

Darüber gibt es zwei Dropdownfelder links ist (Allgemein) und rechts (Deklarationen) zu lesen.
Bei (Allgemein) wählst Du Worksheet aus.
Auf der rechten Seite Change auswählen:

Zwischen
Private Sub Worksheet_Change(ByVal Target As Range)

***HIER KOMMT DER CODE HIN***

End Sub
schreibst oder kopierst du diesen Code:

a = ActiveCell.Row
b = ActiveCell.Column
Application.Goto reference:=Sheets("Sheet1").Cells(a+1, b), Scroll:=True


Das Fenster wieder schließen...
ausprobieren.....

Gruß Andreas

Antwort 10 von Davidrange

Hey Herzlichen Dank für deine Hilfe!

ist super!

Aber mich nervt noch, dass dann sheet1 immer aufgerufen wird.
wäre besser wenn das einfach im hintergrund bliebe.
geht das???

hab schon irgendwie versucht das Aktive zu entfernen schaffs aber net

Danke

Antwort 11 von Kauz1

Hallo David...
mach folgende Änderung:

Mach am Ende der letzten Codezeile aus True - False
Cells(a+1, b), Scroll:=True
Cells(a+1, b), Scroll:=False

Gruß Andreas

Antwort 12 von Davidrange

Vielen Dank,

Ich glaube deine Geduld ist jetzt am Ende aber das ist nicht was ich meinte.

Ich arbeite auf einem anderen sheet. z.B. sheet2. Drücke eine Taste und verlinke eine Zelle von sheet2 auf sheet1.

Der Link kommt in die Zelle die auf sheet1 zuletzt ausgewählt war ...

anschließend wird die darunter liegende Zelle ausgewählt.
Ich gehe auf sheet3 und verlinke wieder auf sheet1 ...usw

soweit habe ich es hinbekommen

Allerdings gibt es nicht nur sheet 1+2+3 sondern ca. 200

und wenn dann beim Verlinken die Ansicht immerwieder auf sheet1 springt scrolle ich mir unten in der Leiste wo die sheets aufgeführt sind die Finger wund.

Kann du mir noch mal helfen? Wenn ich das von Hand machen muss dauert das Tage. :'(

Schöne Grüße
David

Antwort 13 von Kauz1

Hallo David...
Ich versuch mal folgendes:

Du markierst eine Zelle auf einem beliebigen Blatt, deren Inhalt auf Sheet1 kopiert werden soll...
Dann startest Du mit z.B. <Strg+K> ein Makro, welches den Inhalt der aktuellen Zelle auf Sheet1 ablegt.

Wäre das besser?

Gruß Andreas

PS.:Ich fang schon mal an :-)

Antwort 14 von davidrange

Das ist nett aber das habe ich schon hinbekommen:

Sub Makro1()
'
' Tastenkombination: Strg+g
'
Range("A2").Select
Selection.Copy
Sheets("Tabelle1").Paste Link:=True

End Sub

der soll das halt noch untereinanderschreiben (hab ich auch hinbekommen) aber nicht immer sheet1 auf den bildschirm holen (bekomme ich nicht hin)


Abervielen Dank zum 10.Mal ;)

Antwort 15 von Kauz1

Hallo David...
dann woll'n wir mal:

Tausch den Code von Antwort 9 gegen diesen aus:


If RaZeile = 0 Then RaZeile = ActiveCell.Row
If RaSpalte = 0 Then RaSpalte = ActiveCell.Column
Application.Goto reference:=Sheets("Sheet1").Cells(RaZeile + 1, RaSpalte), Scroll:=False
RaZeile = RaZeile + 1

Dann gehe mit Alt+F11 in den VBA-Editor.
Auf der linken Seite müßte laut deiner Beschreibung als letztes im "Tabellenbaum" ein Modul1 stehen.
Dort ein Doppelckick drauf.

Nun siehst Du auf der rechten Seite Dein Makro.

Setze folgende Zeilen oberhalb ein:

Option Explicit
Dim RaZeile As Integer
Dim RaSpalte As Integer
Dim Link As String
Dim ABlatt As String

Zwischen
Sub Makro1

End sub

kopierst Du diesen Code:

ABlatt = ActiveSheet.Name
Application.ScreenUpdating = False
Sheets("Tabelle1").Activate
RaZeile = ActiveCell.Row
RaSpalte = ActiveCell.Column
Sheets(ABlatt).Activate
Link = ActiveCell.Value
Sheets("Tabelle1").Cells(RaZeile, RaSpalte) = Link
Application.CutCopyMode = False
Application.ScreenUpdating = True
Sheets(ABlatt).Activate

Dann sollte Dein Shortcut erhalten bleiben.

Ich schau dann heut' Abend hier noch mal rein....

Ansonsten bis denne

Andreas

Antwort 16 von Kauz1

Hallloooo David..

Nachtrag:

Hab was vergessen..

Statt Sheets("Tabelle1")
muß bei Dir
Sheets("Sheet1") stehen.

Das mußt Du 2 mal korregieren.

Tschööö Andreas

Antwort 17 von davidrange

Das funktioniert leider nicht. Es wird auf sheet1 immer in Zeile2 kopiert. Und nicht als Link sondern als Wert.

Aber trotzdem vielen Dank.

Ich habs auf der Arbeit soweit bekommen wie ich es haben wollte, nur dass er immer auf Tabelle1 mit der Ansicht(Auswahl) sprang. ich drückte den shortcut es wurde alles ausgeführt wie ich es haben wollte, aber die Tabelle1 worde aufgerufen und das nervt wenn man sich dann wieder bis Tabelle143 weiterklicken muss. Ich hab den Code jetzt leider nicht hier.


Kann ich dir das dann mal zeigen und Du gibt mir dann nochmal einen Tipp?

Vielen Dank

Sag wie hast du das so gut gelernt?
Hast du irgendwelche Büche/Lehrgänge gekauft/besucht?

Schöne Grüße
David

Antwort 18 von ChatAlligator

Die Zelle unter der aktiven auswählen:
ActiveCell.Range("A2").Select

Antwort 19 von Kauz1

Hallo David..
wenn alles schon so funktioniert wie Du möchtest, außer das Stehenbleiben auf Sheet1, dann hab ich noch folgenden Tipp:

Am Anfang Deines Makros dies davor setzen

ABlatt = ActiveSheet.Name

bedeutet:
Der Tabellenname auf der sich die Quellzelle befindet wird in die Variable ABlatt geschrieben....
dann dein Code:

Range("A2").Select
Selection.Copy
Sheets("Tabelle1").Paste Link:=True


Am Ende Deines Makros kommt dann noch:

Sheets(Ablatt).Activate

Damit wird das zuletzt aktive Blatt vor dem Schreiben auf Sheet1 wieder angewählt.

Die Variable ABlatt sollte dimensioniert sein:
oberhalb Deines Makros die Zeile:

Dim Ablatt as String

Zu Deiner letzten Frage:
Ganz kurz gesagt, ca. 20 Jahre Selbststudium mit wechselder Intensität.
Mittels Bücher ganz viel Try and Error; die Online-Hilfen, und seit ein paar Jahren das Internet.... sprich dieses Forum.

Dann bis Montag?...
Gruß Andreas

Antwort 20 von Kauz1

Hallo David...
hab Nachtschicht und noch einen Versuch für Dich:

Application.Goto reference:=Sheets("Sheet1").Cells(1, 1), Scroll:=True
RaZeile = ActiveCell.Row
RaSpalte = ActiveCell.Column
For TaBlatt = 1 To Sheets.Count
If Sheets(TaBlatt).Name <> "Sheet1" Then
Sheets(TaBlatt).Activate
Range("A2").Select
Selection.Copy
Sheets("Sheet1").Paste Link:=True
End If
Next TaBlatt


Das in Dein Makro kopieren.... und das Folgende oberhalb des Makros:

Option Explicit
Public RaZeile As Integer
Public RaSpalte As Integer
Public TaBlatt As Integer


Im VBA-Code der Tabelle Sheet1 sollte das stehen:

Private Sub Worksheet_Change(ByVal Target As Range)
If RaZeile = 0 Then RaZeile = ActiveCell.Row
If RaSpalte = 0 Then RaSpalte = ActiveCell.Column
Application.Goto reference:=Sheets("Sheet1").Cells(RaZeile + 1, RaSpalte), Scroll:=False
RaZeile = RaZeile + 1
End Sub



Damit brauchst Du das ganze nur einmal starten, und es wird von allen Tabellenblättern die Zelle A2 in Sheet1 untereinander in Spalte A abgelegt

Viel Spass beim Ausprobieren.... Sicherheitshalber mit einer Kopie Deines Orginals.
Ich habs getestet... aber man wieß ja nie.

Gruß Andreas

Antwort 21 von davidrange

Alter Schwede!!!
Das ist ja der Hammer :). Funktioniert genau wie ich es haben wollte!!!

Allerdings funktioniert das nur machmal, ab dem ca. 250 Sheet bricht der ab. Wobei einmal ist er auch ganz durchgelaufen und das reicht ja.

Vielen Dank.
Weis garnicht wie ich mich revangieren kann.

also ich will das auf jeden fall irgendwann mal verstehen, was du da gemacht hast. Kannst Du mir ein gutes Autodidaktisches Buch empfehlen?

Beste Grüße
David

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: