Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
852to856
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
852to856
852to856
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

mit VBA Doppeleingabe in einer Spalte vermeiden

mit VBA Doppeleingabe in einer Spalte vermeiden
20.03.2007 02:17:06
Paul Kuhn

Hallo,
ich bastel gerade an nachfolgendem Script.
Dieses schreibt Kundendaten in eine andere Datei, in der die Kunden Zeile für Zeile aufgelistet sind.
Nun soll aber vorher überprüft werden, ob der Kundenname in der gesamten Spalte C bereits vorkommt.
Falls ja, soll das Programm noch in der Spalte I überprüfen, ob auch die Emailadresse identisch ist.
Ist das der Fall, soll das Programm die Kunden-Nummer (in der ersten Spalte) aus der entsprechenden Datei in Zelle C3 / Sheet Kalkulation / Datei Auftragsbearbeitung-19 übertragen.
Ist das nicht der Fall, kann das Script wie unten durchlaufen, weil ja dann der Kunde automatisch angelegt wird.
Wer kann mir also sagen, wie ich diese Abfrage in 2 Spalten bewerkstellige um dann zu entscheiden,
ob ein Kunde in einer Zeile neu angelegt wird, oder aber nur eine bereits vergebene Kundennummer gezogen wird.
Ich freue mich auf eine Antwort.
Gruß


Sub Auftragsdaten_vorbereiten()
'Übertragen der Daten in die Datenbank
Paul = (Sheets("Kalkulation").[l4] & " - " & [l9] & " - " & [n1] & ".xls")
Paul = ActiveWorkbook.Name
ChDir "x:\"
Workbooks.Open Filename:="x:\Datenbank.xls", _
UpdateLinks:=0
Sheets("Kunden").Activate
Range("A2").Select
Cells(Rows.Count, 2).End(xlUp).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Offset(0, -1).Copy
Windows(Paul).Activate
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Kalkulation").Select
Range("C3").Select
ActiveSheet.Paste
Selection.Interior.ColorIndex = 40
Selection.Borders(xlLeft).LineStyle = xlNone
Selection.Borders(xlRight).LineStyle = xlNone
Selection.Borders(xlTop).LineStyle = xlNone
With Selection.Borders(xlBottom)
.Weight = xlMedium
.ColorIndex = xlAutomatic
End With
Selection.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Bestelldaten aufbereitet").Select
Range("D1").Select
Selection.Copy
Windows("Datenbank.xls").Activate
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("D2").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("d3").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("d4").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("d5").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 2).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("d6").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("d7").Copy
Windows("Datenbank.xls").Activate
ActiveCell.Offset(0, 1).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.ScreenUpdating = True
ActiveCell.Offset(0, -36).Select
MsgBox "so o.k. ?"
ActiveWorkbook.Save
ActiveWorkbook.Close
Windows(Paul).Activate
Sheets("Bestelldaten aufbereitet").Select
Range("D13").Select
Selection.Copy
Sheets("Kalkulation").Select
Range("M17").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("c3").Select
Application.Run "'Auftragsbearbeitung-19.xls'!Schaltfläche2_BeiKlick"
Application.ScreenUpdating = False
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Bestelleingang").Select
Range("D17").Select
ActiveWindow.ScrollWorkbookTabs Position:=xlFirst
Sheets("Kalkulation").Select
Range("C3").Select
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit VBA Doppeleingabe in einer Spalte vermeide
20.03.2007 05:12:41
Hans W. Herber
Hallo Paul,
die Chancen, auf so eine Frage eine Antwort zu bekommen, sind nicht gerade groß. Wer wurstelt sich schon gerne zur die Selects durch und baut das Szenario zum Testen auf.
Ich habe zuerst mal versucht, den Code auf das Wesentliche zu konzentrieren und die Select-Passagen rausgeworfen. Teste zuerstmal, ob dieser Code das macht, was dein alter gemacht hat. Es kann sich da ein Fehler eingeschlichen haben, da mir vom Selektieren etwas schwindelte ;-)
Die MsgBox-Passage habe ich rausgenommen, da sie in der eingesetzten Art keinen Sinn macht.
Sieh Dir bitte das folgende WikiBook (mit Download der Offline-Version) an:
http://de.wikibooks.org/wiki/VBA_in_Excel_-_Grundlagen
Du wirst einiges an Informationen finden, die bei der VBA-Programmierung nützlich sind.
Der Code:

Sub Auftragsdaten_vorbereiten()
Dim wksA As Worksheet, wksB As Worksheet, wksC As Worksheet
Dim iRowL As Integer
Set wksA = ActiveWorkbook.Worksheets("Kalkulation")
Set wksB = ActiveWorkbook.Worksheets("Bestelldaten aufbereitet")
Workbooks.Open Filename:="x:\Datenbank.xls", UpdateLinks:=0
Set wksC = Worksheets("Kunden")
iRowL = wksC.Cells(Rows.Count, 2).End(xlUp).Row + 1
wksC.Cells(iRowL, 1).Copy wksA.Range("C3")
With wksA.Range("C3")
.Interior.ColorIndex = 40
.Borders(xlLeft).LineStyle = xlNone
.Borders(xlRight).LineStyle = xlNone
.Borders(xlTop).LineStyle = xlNone
.Borders(xlBottom).Weight = xlMedium
.Borders(xlBottom).ColorIndex = xlAutomatic
.BorderAround Weight:=xlThin, ColorIndex:=xlAutomatic
End With
wksB.Range("D1:D7").Copy
wksC.Cells(iRowL, 2).Paste Transpose:=True
ActiveWorkbook.Close savechanges:=True
wksB.Range("D13").Copy wksA.Range("M17")
Application.CutCopyMode = False
End Sub

Gruss hans
Anzeige
AW: mit VBA Doppeleingabe in einer Spalte vermeide
22.03.2007 00:55:56
Paul Kuhn
Hallo und vielen Dank für Deine Mühe,
ich habe das Script probiert, es bleibt allerdings in unten genannter Reihe stehen, ohne das ich wüßte warum.
Die Datenbank wurde geöffnet, doch wurden die Daten übertragen.
Das von mir eingetragene Script war nur zur Veranschaulichung gedacht, sollte ich zu kompliziert formuliert haben.
Was ich nicht erkenne, ist eine Abfrage eingebaut, ob der Kunde in der Spalte B bereits schon einmal vorhanden ist? Zunächst eine gute Nacht
Paul
wksC.Cells(iRowL, 2).Paste Transpose:=True
AW: mit VBA Doppeleingabe in einer Spalte vermeide
22.03.2007 07:32:22
Hans W. Herber
Hallo Paul,
es war mir zu mühsam, das Szenario zum Testen aufzubauen. Tausche die kritische Zeile aus durch:
wksC.Cells(iRowL, 2).PasteSpecial Transpose:=True
Teste dann nochmal, ob das Script läuft. Danach können wir zum nächsten Schritt gehen.
Gruss hans
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige