Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
952to956
952to956
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Daten in Zelle schreiben per Makro

Daten in Zelle schreiben per Makro
23.02.2008 12:32:00
Tobi
Hallo Leute .. ich habe mal wieder eine Problem das ich nicht gelöst bekomme.
Ich habe ein Datenblatt im ich das wie folgt aussieht:
D4 die "alte" Artikelnummer
D5 die "neue" Artikelnummer
D6 Bezeichnung
D7 Preis
Und eine Datei Preis.xls
Hier sehem untereinander die Artikel
SpalteA die "alte" Artikelnummer
SpalteB die "neue" Artikelnummer
SpalteC Bezeichnung
SpalteD Preis
Wenn ich bei der "alten" Seriennummer was eingebe wird per SVweris automatisch die Bezeichnung und der Preis in den Zellen D6 und D7 angezeigt. Das könnte ich jetzt auch mit der "neuen" Artikelnummer so machen. Nur möchte ich in D4 und D5 keine Formel drinnen stehen haben. Also müsste es mit VBA gemacht werden.
Denn es soll so sein das man wahlweise die alte oder die neue eingibt dann soll jeweils die andere angezeigt werden
Kann mit bei dem Problem jemand helfen
Anbei die TestDatei
https://www.herber.de/bbs/user/50139.zip
Vielen Dank
Tobi

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabe wahlweise
23.02.2008 17:15:09
Erich
Hallo Tobi,
hier eine VBA-freie Lösung (also nicht das, was du angefragt hast):
Eingegeben wird die alte oder neue Nr in C4, den Rest erledigen die Formeln.
 CDEFG
3BestellnummerAlte BestellnrNeue Bestellnr Bezeichnung Preis
444DWare 44,44

Formeln der Tabelle
ZelleFormel
D4=WENN(ISTZAHL(VERGLEICH(C4;[Preis.xls]Tabelle1!$A$1:$A$5;0)); C4; WENN(ISTZAHL(VERGLEICH(C4;[Preis.xls]Tabelle1!$B$1:$B$5;0)); INDEX([Preis.xls]Tabelle1!$A$1:$A$5; VERGLEICH(C4;[Preis.xls]Tabelle1!$B$1:$B$5;0)); "not found"))
E4=WENN(ISTZAHL(VERGLEICH(C4;[Preis.xls]Tabelle1!$B$1:$B$5;0)); C4; WENN(ISTNV(SVERWEIS(C4;[Preis.xls]Tabelle1!$A$1:$A$5;1;0)); "nix gefunden"; SVERWEIS(C4;[Preis.xls]Tabelle1!$A$1:$B$5;2;0)))
F4=WENN(ISTNV(SVERWEIS(D4;[Preis.xls]Tabelle1!$A:$C;3;0)); "Nicht vorhanden";SVERWEIS(D4;[Preis.xls]Tabelle1!$A:$C;3;0))
G4=WENN(ISTNV(SVERWEIS(D4;[Preis.xls]Tabelle1!$A:$D;4;0)); "Nicht vorhanden";SVERWEIS(D4;[Preis.xls]Tabelle1!$A:$D;4;0))

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Eingabe wahlweise
23.02.2008 20:28:00
Tobi
Danke schon mal .
Soweit habe ich es schon. Aber es geht wegen der weiterbearbeitung leider nicht mit Formel.
Jetzt habe ich es mal innerhalb eines Private Sub Worksheet_Change(ByVal Target As Range)
versucht ..
mit

If Not Intersect(Target, Range("C4")) Is Nothing Then
Range("C4").Formula = "=IF(ISNA(VLOOKUP(C4,'[Preis.xls]Tabele1'!$A:$D,2,0)),"""",VLOOKUP(C1,'[Preis.xls]Tabell1'!$A:$D,2,0))"


Aber dort ist das Problem das ich mit einem Marko die Inhalte der Eingabeseite lösche.
Nur dann wird nach dem löschen des Inhaltes


Range("C4").ClearContents


Die Formel in die Zelle C4 geschrieben da ja die oberste Bedingung erfüllt ist.
Ich komme einfach nicht weiter :(

Anzeige
AW: Eingabe wahlweise
24.02.2008 13:39:36
fcs
Hallo Tobi,
hier mein Vorschlag:
Je nachdem in welche der beiden Zellen man die Eingabe macht, werden per Makro die Formeln in den 3 anderen Zellen geändert.
Falls du mit Blattschutz arbeitest, dann muss du zusätzlich am Anfang den Blattschutz aufheben und am Ende wieder einschalten.
Das Aus-/Einschalten der Events, verhindert, dass bei Änderung der Eingabe Formel in der jeweils anderen Eingabezelle dieses Makro nochmals ausgeführt wird.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim PfadPreis As String, DateiPreis As String, TabPreis As String
PfadPreis = ThisWorkbook.Path 'Anpassen, wenn Dateien nicht im gleichen Verzeichnis
DateiPreis = "Preis.xls"
TabPreis = "Tabelle1"
Application.EnableEvents = False
Select Case Target.Address
Case "$D$4" 'Eingabe Alte Artikelnummer
'Formel neu Nummer
Target.Offset(0, 1).FormulaR1C1 = _
"=IF(ISBLANK(RC[-1]),"""",IF(ISNA(VLOOKUP(RC[-1],'" & PfadPreis & "\[" & DateiPreis _
& "]" & TabPreis & "'!C1:C4,3,0)),""nicht vorhanden"",VLOOKUP(RC[-1],'" _
& PfadPreis & "\[" & DateiPreis & "]" & TabPreis & "'!C1:C4,2,0)))"
'Formel Artikel-Beschreibung
Target.Offset(0, 2).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-2],'" & PfadPreis & "\[" & DateiPreis & "]" & TabPreis _
& "'!C1:C4,3,0)),""nicht vorhanden"",VLOOKUP(RC[-2],'" & PfadPreis _
& "\[" & DateiPreis & "]" & TabPreis & "'!C1:C4,3,0))"
'Formel Preis
Target.Offset(0, 3).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-3],'" & PfadPreis & "\[" & DateiPreis & "]" & TabPreis _
& "'!C1:C4,3,0)),""nicht vorhanden"",VLOOKUP(RC[-3],'" & PfadPreis _
& "\[" & DateiPreis & "]" & TabPreis & "'!C1:C4,4,0))"
Case "$E$4" 'Eingabe Neue Artikelnummer
'Formel alte Nummer
Target.Offset(0, -1).FormulaR1C1 = _
"=IF(ISERROR(MATCH(RC[1],'" & PfadPreis & "\[" & DateiPreis & "]" & TabPreis _
& "'!C2,0)),""nicht vorhanden"",INDEX('" & PfadPreis & "\[" & DateiPreis & "]" _
& TabPreis & "'!C1,MATCH(RC[1],'" & PfadPreis & "\[" & DateiPreis & "]" _
& TabPreis & "'!C2,0),1))"
'Formel Artikel-Beschreibung
Target.Offset(0, 1).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-1],'" & PfadPreis & "\[" & DateiPreis & "]" & TabPreis _
& "'!C2:C4,2,0)),""Nicht vorhanden"",VLOOKUP(RC[-1],'" & PfadPreis & "\[" _
& DateiPreis & "]" & TabPreis & "'!C2:C4,2,0))"
'Formel Preis
Target.Offset(0, 2).FormulaR1C1 = _
"=IF(ISNA(VLOOKUP(RC[-2],'" & PfadPreis & "\[" & DateiPreis & "]" & TabPreis _
& "'!C2:C4,2,0)),""Nicht vorhanden"",VLOOKUP(RC[-2],'" & PfadPreis & "\[" _
& DateiPreis & "]" & TabPreis & "'!C2:C4,3,0))"
Case Else
'do nothing
End Select
Application.EnableEvents = True
End Sub


Anzeige
AW: Eingabe wahlweise
24.02.2008 15:14:00
Tobi
Cool Danke
So funktioniert es.
Nur noch eine Kleine Frage
Es gibt mehrere Zeilen wo diese Eingabe erfolgen kann.
Also man kann die "Alte Ersatzeilnummer in D4 in E4, E5 usw. eingeben.
Dann soll in der gleichen Zeile das erfolgen wie in der Zeile D
Kann ich die Zellen abfrage Variabel machen?
So in etwar
Dim i as Inetger
.
.
I = 4
.
Case "$D$i" 'Eingabe Alte Artikelnummer
so das Case von $D$4 bis $D$20 geht ?

AW: Eingabe wahlweise
24.02.2008 16:04:00
fcs
Hallo Tobi,
dann muss man zunächst die Zeile der Target-Zelle prüfen und dann entsprechend die Spalte der Target-Zelle.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim PfadPreis As String, DateiPreis As String, TabPreis As String
PfadPreis = ThisWorkbook.Path 'Anpassen, wenn Dateien nicht im gleichen Verzeichnis
DateiPreis = "Preis.xls"
TabPreis = "Tabelle1"
Application.EnableEvents = False
If Target.Row >= 4 And Target.Row 


Anzeige
AW: Eingabe wahlweise
24.02.2008 17:48:00
Tobi
Hallo vielen Dank
Nur ich verstehe es leider nicht ganz
Was soll Case4 und Case5 bewirken?

AW: Eingabe wahlweise
24.02.2008 17:57:00
Hajo_Zi
Hallo Tobi,
damit wird die Spalte festgestellt.

AW: Eingabe wahlweise
24.02.2008 17:58:00
Tobi
Ach .. dann ist es klar.
Vielen Dank für eure Hilfe

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige