Probleme bei einem VBA-Programm

  • Excel

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Probleme bei einem VBA-Programm

    Hallo,
    ich hoffe jemand kann mir bei dir Erstellung von folgendem VBA-Programm behilflich sein,es soll mithilfe einer Schleife erstellt werden:)
    Vielen Dank schonmal im Voraus:)

    3. Gegeben ist ein Englisch-Deutsches Wörterbuch in Tabellenform (siehe rechts).
    a) Bitte schreiben Sie ein Programm bei dem der Benutzer ein englisches Wort per InputBox eingibt und als Antwort die korrekte deutsche Bedeutung erhält. Die Antwort soll bitte aussagekräftig im Direktbereich ausgegeben werden. D. h., es soll sowohl das eingegebene englische Wort als auch dessen deutsche Bedeutung ausgegeben werden.
    b) Erstellen Sie bitte einen Programmablauf-plan für Ihr Programm.
    Hi also zu a) wenn die Spalten fest und bekannt sind, kannste in einer lokalen Variable vom Typ Range den Bereich für die deutschen und die englischen Wörter festlegen.
    Oder direkt in einer For Each Schleife verwenden:

    VB.NET-Quellcode

    1. Dim input As String
    2. input = Inputbox("Englisches Wort eingeben!",0,"Abfrage")
    3. For Each c in Worksheets("Tabelle1").Range("A1:B3").Cells
    4. If Cells(c.Row, c.Column).Value = input Then
    5. MsgBox(input & " = " & Cells(c.Row, c.Column).Value")
    6. End If
    7. Next


    oder so ähnlich

    zu b) bist du dir sicher einen PAP zu zeichnen? nicht ehr ein Struktugramm?
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    For Each c in Worksheets("Tabelle1").Range("A1:B3").Cells
    Wird bei einem längeren Dictionary irgendwann mal zeitintensiv.
    Wesentlich effizienter ist die Methode Range.Find.

    Die Vorgabe
    es soll mithilfe einer Schleife erstellt werden
    würde ich dann eher durch eine Schleife um die Eingabe erfüllen.
    Do ... While Len(input) > 0

    Aber es macht eh keinen Sinn, die Hausaufgaben anderer Leute zu machen.
    Der eigentliche Sinn der Aufgabe wird dabei verfehlt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Es wird dir für deine Übungsaufgabe nichts helfen, aber eine elegante Lösung wäre:

    Visual Basic-Quellcode

    1. Do
    2. InputText = Inputbox("Englisches Wort eingeben!",0,"Abfrage")
    3. If Len(InputText) = 0 Then Exit Do
    4. MsgBox "Das deutsche Wort für & " InputText & " ist: " & GermanTranslation(InputText)
    5. Loop
    6. ​Function GermanTranslation(ByVal EnglishPhrase As String) As String
    7. GermanTranslation = "--nicht gelistet--"
    8. On Error Resume Next
    9. GermanTranslation = Range("B:B").Find(EnglishPhrase, LookIn:=xlValues, LokkAt:=xlWhole).Offset(0,1).Value
    10. End Function
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --