vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Allgemeine Diskussionen
Programmierstil - Such-/Vergleichsfunktion 
Autor: Zwer.ch
Datum: 18.07.03 08:42

moin,

ich hab auf die schnelle n vba-script geschrieben und hab das gefühl, dass das teil recht langsam ist

die frage ist, kann man das vernünftig beschleunigen?

hab irgendwie das gefühl, dass ich das eher umständlich gelöst habe ...


zur erläuterung:

die umgebung ist excel-vba,

in der tabelle1 befinden sich in den spalten 7,8 und 9 die suchkriterien,
die spalte 1 dient zur überprüfung, ob überhaupt ein datensatz existiert in dieser zeile,
in der spalte 10 wird das ergebnis ausgegeben.

bedingt durch die vba-struktur startet zuerst eine sub(), welche die suchkriterien zeilenweise ausliest und an eine funktion() übergibt.

die funktion wiederum hat in tabelle2 eine vierspaltige matrix zur verfügung.
spalten 1-3 entsprechen den möglichen suchkriterien aus tabelle1, die von der sub übergeben werden.
stimmen alle 3 kriterien überein, wird spalte 4 der entsprechenden zeile übergeben.

alle klarheiten beseitigt?

hier mal der code:

Option Explicit
 
Sub SucheDaten()
 
    Dim i As Integer
 
    'Ab der 2. Zeile beginnen, 1. Zeile = Überschriften
    i = 2
 
    With Worksheets(1)
        Do While Not IsEmpty(.Cells(i, 1))
            .Cells(i, 10) = SearchData(.Cells(i, 7), .Cells(i, 8), .Cells(i, 9))
            i = i + 1
            DoEvents
        Loop
    End With
 
End Sub
 
Private Function SearchData( _
    sKrit1 As String, _
    sKrit2 As String, _
    sKrit3 As String) As String
 
    Dim i As Integer
 
    'Ab der 2. Zeile beginnen, 1. Zeile = Überschriften
    i = 2
 
    With Worksheets(2)
        Do While Not IsEmpty(.Cells(i, 1))
            If sKrit1 = .Cells(i, 1) And _
                sKrit2 = .Cells(i, 2) And _
                sKrit3 = .Cells(i, 3) Then
 
                SearchData= .Cells(i, 4)
                Exit Function
            End If
            i = i + 1
            DoEvents
        Loop
        SearchData = "NN"
    End With
 
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Programmierstil - Such-/Vergleichsfunktion661Zwer.ch18.07.03 08:42
Re: Programmierstil - Such-/Vergleichsfunktion385ModeratorMartoeng18.07.03 20:21
Re: Programmierstil - Such-/Vergleichsfunktion374Zwer.ch19.07.03 12:05

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel