Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Welche Verzweigung ist richtig If-Then; Select-Case oder?

(Anonym) / 2 Antworten / Flachansicht Nickles

Hi Freunde,

ich möchte aus einer Excel Tabelle mit ca 6000 Artikelnummern (in Spalte 1) das entsprechende Pedant (Artikelbeschreibung in Spalte 2) per Code einfügen.

Praktisch gesehen so: Ich schreibe in einer Tabellenvorlage in die Zellen A1 bis A30 jeweils eine Arikelnummer. Die Prozedur ist unter dem UfterUpdate Ereignis so geschrieben, daß in die Zellen B1 bis B30 die zutreffende Artikelbeschreibung per Code eingefügt wird.

Nur mit If-Then ist das eine Lebensaufgabe und mit Select-Case erscheint es mir ähnlich umfangreich.

Hoffentlich hat hier in diesem Forum jemand eine bessere Idee und kann mir diese, eventuell auch per E-Mail, falls ich eine Rückfrage haben sollte, mit einem Beispiel aufzeigen.

Nur glaube ich muß man auch darauf achten, daß die Prozedur nicht zu umfangreich wird, denn ich habe schon mal beim Programmieren unter VBA bei einer sehr großen Prozedur die Grenze von 64 KB erreicht und da sagte MS, das wäre die Obergrenze pro Prozedur, und weiter ging nichts.

Besten Dank im voraus
Harry

bei Antwort benachrichtigen
T-Rex (Anonym) „Welche Verzweigung ist richtig If-Then; Select-Case oder?“
Optionen

Hallo,

habe eine Möglichkeit, die Du an Deine Gegebenheiten anpassen mußt.
Eventuell mußt Du auch noch ein paar Fehler beseitigen (soll nur ein Beispiel sein):

'   Alte Zelle
Private OldTarget As Excel.Range

Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    '   Speicher reservieren
    Dim Zelle As Excel.Range

    '   Ist eine alte Zelle definiert gewesen?
    If (TypeName(OldTarget) <> "Nothing") Then
        '   steht in der alten Zelle eine Zahl drin?
        If IsNumeric(OldTarget) Then
            '   entsprechende Zelle suchen
            Set Zelle = Worksheets("Tabelle2").Range("A1:A5").Find(What:=OldTarget, LookIn:=xlValues, LookAt:=xlWhole)
            '   Wurde Zelle gefunden?
            If (TypeName(Zelle) <> "Nothing") Then
                Worksheets("Tabelle1").Cells(OldTarget.Row, OldTarget.Column + 1).Value = _
                    Worksheets("Tabelle2").Cells(Zelle.Row, Zelle.Column + 1).Value
            End If
        End If
    End If
    '   Neue Zelle zuweisen
    Set OldTarget = Target
End Sub

 GrüßeT-Rex 
bei Antwort benachrichtigen