Inoffizielle Völker Strategien der Hoax Strategien der Aqua Strategien der Pillar Strategien der Mimix Strategien der Flit Strategien der Khind Strategien der Terrah Strategien der Vulca Home
 Home  •  Blue Moon Fans Foren-Übersicht  •  Blue Moon Ligen  •  Download  •  Album  •  Suchen  •  Letzte Themen
Profil  •  Lesezeichen  •  Neue Beiträge  •  Einloggen, um private Nachrichten zu lesen  •  Login  •  Registrieren
Nächstes Thema anzeigen
Vorheriges Thema anzeigen

Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen
Autor Nachricht
erml
Gott des krassmatischen Charismas & more
Gott des krassmatischen Charismas & more


Alter: 52
Anmeldungsdatum: 18.12.2004
Beiträge: 2316

italy.gif
BeitragVerfasst: Fr 10 Nov, 2006 00:30  Titel:  Excelfrage Antworten mit ZitatNach untenNach oben

Vielleicht kann mir jemand bei einem Excelproblem helfen:

Gegeben sei eine aufsteigend sortierte Liste, zB in Spalte A, mit ein paar hundert Einträgen.
Ich möchte folgendes erreichen: Ich schreibe in eine Zelle, egal welche, zB A1, einen Wert, der in der Liste vorkommt, und möchte nun, dass der Bildausschnitt auf den betreffenden Wert in der Liste verschoben wird, also dass automatisch an die richtige Stelle gescrollt wird.

Hat jemand eine Idee, wie man das realisieren könnte? Ich nehme an, dass ein Makro notwendig sein wird, in dem der Wert gesucht und angesprungen wird. Vielleicht gehts aber auch einfacher...

lg und danke schon mal
erml


Stier Geschlecht:Männlich Schwein OfflinePersönliche Galerie von ermlBenutzer-Profile anzeigenPrivate Nachricht senden
Mobbi
Gott der Abstrusitäten
Gott der Abstrusitäten


Alter: 45
Anmeldungsdatum: 08.04.2004
Beiträge: 6140
Wohnort: Berlin
blank.gif
BeitragVerfasst: Fr 10 Nov, 2006 01:39  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Da benötigst Du tatsächlich ein Makro. Wenn Du nur schnell an die Stelle gelangen willst, an welcher Dein gesuchter Eintrag zu finden ist, dann kannst Du auch über die Menü-Leiste den entsprechenden Eintrag suchen.
Spalte markieren --> Menüleiste: Bearbeiten --> Suchen --> Suchvariable/Name/was auch immer eingeben. (noch schneller ist der Befehl Strg+f --> macht das Gleiche)).

Willst das tatsächlich automatisieren, so wird das um einiges komplizierter. Da kann ich Dir auf die Schnelle auch nicht weiterhelfen.

_________________
Wer hier lebt, weiß nicht was er morgen verpassen könnte, außerdem werden die Blue Moon-Krieger auferstehen und die Vaqua und Homix und Inquisisandten sowie die restlichen anderen Typen, deren Namen mir entfallen sind, wo war ich stehengeblieben?

Löwe Geschlecht:Männlich Pferd OfflinePersönliche Galerie von MobbiBenutzer-Profile anzeigenPrivate Nachricht senden
Frog
Gott des Ortograviehs
Gott des Ortograviehs


Alter: 53
Anmeldungsdatum: 12.04.2005
Beiträge: 3375
Wohnort: Wien
austria.gif
BeitragVerfasst: Fr 10 Nov, 2006 09:56  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Du trägst im Code deiner Arbeitsmappe folgendes ein
Zitat:
Private Sub Workbook_Open()
Application.OnEntry = "Eingabe"
End Sub

Damit wird bei jeder Eingabe die Prozedur "Eingabe" aufgerufen.


Dann musst du noch ein Modul einfügen und dort folgende Prozeduren hineinkopieren
Zitat:
Sub Eingabe()
Call JumpTo(ActiveSheet.Cells(1, 2))
End Sub

Sub JumpTo(wert As Integer)
Dim c As Integer

With ActiveSheet.Range("a1:a500")
Set f = .Find(wert, LookIn:=xlValues)
r = Mid(f.Address(), 2, 1)
c = CInt(Right(f.Address(), Len(f.Address()) - 3)) - 1
rc = CStr(r) & CStr(c)
If Not f Is Nothing Then
Range(rc).Select
End If
End With

End Sub

Der Code ist natürlich nur rudimentär und ziemlich fehleranfällig, kann dir aber mal einen Startpunkt geben. Ich habe angenommen, dass sich die Zielwerte in deinem aktiven Blatt in der Spalte "A" befinden und die überwachte Zelle auf B1. Ein Problem ist, dass er bei jeder Änderung dort hinspringt. Das ließe sich umgehen, indem du den Wert von B1 noch in eine andere Zelle kopiert und nur dann springst, wenn die Werte von B1 und (sagen wir mal) C1 unterschiedlich sind. Die Zieladressermittlung ist auch nicht sonderlich elegant, aber mir ist auf die Schnelle nichts Besseres eingefallen. Das Problem war, dass er immer eine Zeile zu weit nach unten gesprungen ist und ich daher das um 1 nach oben korrigieren musste.


Widder Geschlecht:Männlich Schwein OfflinePersönliche Galerie von FrogBenutzer-Profile anzeigenPrivate Nachricht senden
erml
Gott des krassmatischen Charismas & more
Gott des krassmatischen Charismas & more


Alter: 52
Anmeldungsdatum: 18.12.2004
Beiträge: 2316

italy.gif
BeitragVerfasst: Fr 10 Nov, 2006 15:26  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Danke für eure Anteilnahme Very Happy

Ich möchte diese Funktion tatsächlich automatisieren, und der Code mit Application.OnEntry erfüllt diesen Zweck perfekt.

Die Adressermittlung bereitet mir noch Kopfzerbrechen. Ich hab den Eindruck, dass das Programm je nach Lust und Laune mal so, mal anders rechnet. Einmal springt es in die richtige Zeile, dann wieder eine Zeile drunter, je nachdem, ob ich die Prozedur aus der Tabelle starte oder in Einzelschritten im VB-Fenster debugge.

Ein anderes Problem: Die Liste ist absteigend sortiert, wenn ich nun 40 suche, findet das Prog zuerst zB 940, das sollte doch durch den Zusatz LookAt:=xlWhole in der .Find-Methode zu lösen sein, dann liefert Find allerdings gar kein Resultat mehr...


Stier Geschlecht:Männlich Schwein OfflinePersönliche Galerie von ermlBenutzer-Profile anzeigenPrivate Nachricht senden
Frog
Gott des Ortograviehs
Gott des Ortograviehs


Alter: 53
Anmeldungsdatum: 12.04.2005
Beiträge: 3375
Wohnort: Wien
austria.gif
BeitragVerfasst: Sa 11 Nov, 2006 15:26  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Hmmm... Ich habe es gerade mit LookAt:=xlWhole ausprobiert und da funktioniert es problemlos. Meine Liste habe ich von 260 bis 0 in 5er-Schritten absteigend sortiert in der Spalte A drin. Das Phänomen beim Debuggen habe ich jetzt mangels Zeit nicht probiert.

Verbesserung bei der Erkennung der Eingabe:
Zitat:
Sub Eingabe()
If ActiveSheet.Cells(1, 2) <> ActiveSheet.Cells(1, 3) Then
Call JumpTo(ActiveSheet.Cells(1, 2))
ActiveSheet.Cells(1, 3) = ActiveSheet.Cells(1, 2)
End If
End Sub


Verbesserung bei Find:
Zitat:
Set f = .Find(wert, LookIn:=xlValues, LookAt:=xlWhole)


Widder Geschlecht:Männlich Schwein OfflinePersönliche Galerie von FrogBenutzer-Profile anzeigenPrivate Nachricht senden
Frog
Gott des Ortograviehs
Gott des Ortograviehs


Alter: 53
Anmeldungsdatum: 12.04.2005
Beiträge: 3375
Wohnort: Wien
austria.gif
BeitragVerfasst: Mo 13 Nov, 2006 07:21  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Das "Find" funktioniert bei Nicht-Integer-Werten offensichtlich nicht. Da ist eine eigene Suchroutine gefragt.


Widder Geschlecht:Männlich Schwein OfflinePersönliche Galerie von FrogBenutzer-Profile anzeigenPrivate Nachricht senden
erml
Gott des krassmatischen Charismas & more
Gott des krassmatischen Charismas & more


Alter: 52
Anmeldungsdatum: 18.12.2004
Beiträge: 2316

italy.gif
BeitragVerfasst: Fr 17 Nov, 2006 13:22  Titel:  (Kein Titel) Antworten mit ZitatNach untenNach oben

Bin jetzt wieder um einiges schlauer Very Happy :

Anstelle der Find-Funktion hab ich eine einfache Suchroutine eingefügt, ist ja bei einer sortierten Liste ganz einfach.

Zitat:
Sub JumpTo(wert As Variant)
Dim adr As String, i As Integer
i = 4
vglwert = ActiveSheet.Cells(i, 1)
While vglwert > wert
i = i + 1
vglwert = ActiveSheet.Cells(i, 1)
Wend
adr = "A" & CStr(i - 1)
Range(adr).Select
End Sub


Die Suche beginnt in Zelle A4, gesucht wird die Variable "wert".
Dass das Prog immer eine Zeile zu weit nach unten springt (deshalb i-1) liegt daran, dass nach der Bestätigung der Eingabe in die Suchzelle die Markierung immer eine Zelle nach unten wandert. Und das passiert dummerweise nach Durchlauf des Makros.

Danke für deine Hilfe, Frog Very Happy


Stier Geschlecht:Männlich Schwein OfflinePersönliche Galerie von ermlBenutzer-Profile anzeigenPrivate Nachricht senden
Beiträge der letzten Zeit anzeigen:      
Neues Thema eröffnenNeue Antwort erstellen Vorheriges Thema anzeigenDieses Thema verschickenZeige Benutzer, die dieses Thema gesehen habenDieses Thema als Datei sichernPrintable versionEinloggen, um private Nachrichten zu lesenNächstes Thema anzeigen

Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen


Forensicherheit

214125 Angriffe abgewehrt

Alle Zeiten sind GMT + 1 Stunde
Powered by phpBB2 Plus, Artikelverzeichnis and Webkatalog based on phpBB © 2001/6 phpBB Group :: FI Theme :: Mods und Credits