PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Excel - Von Zelle zu Zelle springen (VBA?)


aix
2009-03-04, 15:31:35
Hi,

Ich habe folgendes Problem in Excel:

Ich habe eine Tabelle von A-G , die etwa 100 Zeilen lang wird.
Beschrieben wird das Ding von links nach rechts; bei G angekommen gehts dann in der nächsten Zeile bei A weiter.
Jetzt möchte ich, nachdem ich ein Zelle vollgeschrieben habe nur durch Druck der Enter Taste in die nächste Zelle kommen.

Bei meiner bisherigen Suche ist irgendwie nichts groß bei rumgekommen, außer, dass man das Ganze wohl irgendwie über das Sperren einzelner Zellen hinbekommen kann (funktioniert in Excel07 bei mir aber nicht wirklich :() oder aber über ein kleines VBA Skript.

Mein Bitte wäre nun: Wenn hier jmd vba kann, wär ich sehr dankbar, wenn ihr mir ein solches Skript anfertigen könntet.

Vielen Dank im Vorraus

aix

sei laut
2009-03-04, 16:20:13
REM ***** BASIC *****

sub gehezu
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(1) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1
args3(1).Name = "Sel"
args3(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "By"
args9(0).Value = 1
args9(1).Name = "Sel"
args9(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args9())

rem ----------------------------------------------------------------------
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "By"
args10(0).Value = 1
args10(1).Name = "Sel"
args10(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())


end sub

Das kam raus, als ichs mit Open Office 3.0 aufgezeichnet habe. Dort funktioniert das und ich kann das Makro auf einen Button legen.
Geht eins runter und entsprechend nach rechts bis A.
Ob das auch in Exel07 funktioniert, dafür gebe ich keine Garantie. Bin zu faul, das richtig zu machen. :D

aix
2009-03-04, 18:09:17
wow, das ging schnell danke...

bin mir allerdings grade nicht wirklich im klaren, wie ich das ding zum laufen bekomme (Meine letzte und einzige programmiererfahrung war in der schule mit turbopascal....:rolleyes:)

Wär super, wenn du noch ein paar erklärende Worte dazugibst.

danke

aix

sei laut
2009-03-04, 18:34:20
Ohne Excel wirds schwer, OpenOffice ist nur beinahe eine 1:1 Kopie. X-D
Schau dich unter Extras -> Makros um. Da müsste ein Menü aufgehen, was dich in ein weiteres Popup-Menü bringt, wo du entsprechend ein Makro aufzeichnen kannst oder selbst schreiben. Dort musst du dann ein neues Projekt machen. Dann sollte irgendwann der Begriff Sub auftauchen, das machst du weg und kopierst den Kram oben rein.

Genauer gehts aus dem Kopf nicht. Wenn noch genaue! Fragen dann sind, muss es jemand anderes beantworten.

Edit: Wenn man weiß wie, geht das aufzeichnen innerhalb von 2 Minuten. Das ist ja der Sinn davon, dass man Zeit sparrt.

Absorber
2009-03-04, 19:21:47
1. Öffne Excel (mit dem gewünschten Tabellenblatt)
2. Drücke Alt+F11; Der VisualBasic-Editor öffnet sich
3. Doppelklick in der Übersicht auf der linken Seite auf das Zieltabellenblatt (Im Screenshot Tabelle 1, mit einer roten 1 markiert
4. In das nun geöffnete Fenster füge folgenden Code ein:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Column > 7 Then
Range("A" & ActiveCell.Row + 1).Select
End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <= 7 Then
Target.Next.Select
End If
End Sub

5. Klick auf das Excel-Symbol (im Screenshot mit einer roten 2 markiert)
6. Done

http://img1.abload.de/img/excelk5mn.png

Nachteil der Lösung: du kannst keine Spalte hinter G mehr markieren. Er springt automatisch in die nächste Zelle in der Spalte A; außerdem kannst du nach einer Eingabe nicht mehr nach unten, links oder oben springen, oder in eine andere Zelle klicken. Wenn du eine Zelle änderst landest du AUTOMATISCH in der Zelle daneben, oder darunter bei A. DANACH kannst du erst eine andere Zelle anklicken

Wenn es nicht mehr die Spalte G als letztes sein soll, sondern die Spalte H änderst du die 7 im Code in eine 8.

aix
2009-03-04, 19:38:14
wow, perfekt! danke euch beiden!

funktioniert genauso wie es soll!