Wir wünschen allen Forenteilnehmern ein frohes Fest und einen guten Rutsch ins neue Jahr. x

Zahlen ermitteln mit XVERWEIS in VBA als Makro
#1
Hallo,

habe eine Spalte H70 - H119, in der die Zahlen von 1 - 45 in aufsteigender Reihenfolge stehen und davor in Spalte G70 - G117 45 verschiedene. nicht sortierte Zahlen.

Nun soll in den Feldern I47 - M47 Zahlen eingegeben werden können. Diese Zahlen sollen nun mit der Spalte H70-H119 abgeglichen werden und die entsprechenden Werte in der Spalte davor ermittelt

und eingetragen werden in die Zellen I60 - M60. 

Wenn ich also in  I47 als Beispiel die Zahl 5 eingebe, soll mittels des Makros in der Spalte H70-119 der Wert 5 gesucht und der Wert in der Spalte davor ( G70-G119), zum Beispiel 24 , in die Zelle 

I60 geschrieben werden. 

Analog dazu gibt es noch einen zweiten und dritten Eingabebereich, I51 - M51 und I55 - M55, wobei die Zahlen geschrieben werden sollen in I61 - M61 und I62 - M62.
Antworten Top
#2
moin,

in der Hoffnung dass deine Zellbereiche richtig! sind...
das wäre ein Weg

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngBereich As Range
    Dim c As Range
   
    Set rngBereich = Range("I47:M47")
    If Not Intersect(rngBereich, Target) Is Nothing Then
        Set c = Range("H70:H119").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(60, Target.Column).Value = Cells(c.Row, "G").Value
        End If
    End If
    Set rngBereich = Nothing
   
    Set rngBereich = Range("I51:M51")
    If Not Intersect(rngBereich, Target) Is Nothing Then
        Set c = Range("H70:H119").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(61, Target.Column).Value = Cells(c.Row, "G").Value
        End If
    End If
    Set rngBereich = Nothing
   
    Set rngBereich = Range("I55:M55")
    If Not Intersect(rngBereich, Target) Is Nothing Then
        Set c = Range("H70:H119").Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
        If Not c Is Nothing Then
            Cells(62, Target.Column).Value = Cells(c.Row, "G").Value
        End If
    End If
    Set rngBereich = Nothing
   
End Sub

mfg Tom
Antworten Top
#3
Wieso um alles in der Welt sollte man so etwas per Makro machen wollen, wenn einfache Formeln reichen?
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#4
Hallo Crazy Tom,

erstmal Danke für Deine Mühe. Leider bringt sie nicht den erhofften Erfolg.

1.) Es kommt beim Ausführen die Fehlermeldung: "Argument ist nicht optional !"

2.) Ich verstehe die Zeile  Cells(60, Target usw.     nicht. Was soll die 60 bedeuten?  Ich kann auch nicht erkennen, daß mit dem Script 5 Zahlen in den Zellbereich I60 bis M60 geschrieben werden sollen.
Antworten Top
#5
moin,

bei dem Code handelt es sich um ein Ereignismakro, dass bei einer Zellenänderung im Tabellenblatt stattfindet
also gehört das Makro in das Tabellenblattmodul der entsprechenden Tabelle

wenn du die Zeile Cells(60, Target usw. nicht verstehst solltest du dich erst mal mit VBA-Basics vertraut machen

in deinem Eingangspost stand nüscht davon, dass gleich alle 5 Felder ausgefüllt werden sollen

anbei meine Testdatei

mfg Tom


.xlsm   zabulon.xlsm (Größe: 15,89 KB / Downloads: 9)
Antworten Top
#6
Hallo Crazy Tom,

ich hatte bis dato immer nur Makros gehabt, die auf einem Schalter/Button oder Bild lagen, durch deine Hilfe habe ich jetzt zum ersten Mal ein Ereignismakro in ein Blatt integriert. Das hat zwar ein bißchen gedauert, weill ich all die anderen Zellen noch kopieren mußte und dabei immer auf die genaue Positionierung achten mußte usw, aber die Frimmelei hat sich definitiv gelohnt.

Es funktioniert jetzt endlich alles so, wie ich es haben wollte und damit ist dieses Projekt abgeschlossen.

Für deine Hilfe nochmals ein ganz großes Dankeschön.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste