Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1576to1580
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
Inhaltsverzeichnis

If AND Then und keine Ahnung wie

If AND Then und keine Ahnung wie
07.09.2017 13:15:48
Bernd
Hallo,
ich habe mal wieder ein schweres Problem. Ich betreue mehrere kleine Firmen und habe in diesem Zusammenhang eine Excelmappe gebastelt, in welcher ich diverse Daten jener Firmen verwalte. Nun möchte ich für ein automatisiertes Schreiben, welches in Excel erstellt wird, einige Daten von Excel vorgeben lassen.
In der Beispielmappe sind im Blatt Setup-User diverse Daten zu den einzelnen Firmen und deren Mitarbeitern vorgegeben. In Zelle A2 wird der vom System erkannte Anmeldename ausgegeben. Zelle B2 wird statisch durch Auswahl in einem Userform vorgegeben.
Die zum erkannten User mit der entsprechenden Mandantennr gehörenden Daten sollen mittels VBA in die Zellen F6 – F11 im Blatt Anschreiben gesetzt werden.
Ich bin sicher, das kann man auch mit Schleifen machen. Mit meinen Anfängerkenntnissen in VBA habe ich zwar einen Weg gefunden, bin aber sicher, dass es weit schnelleren Weg über eine Schleife gibt, den ich nur nicht finden kann.
Es wäre toll, wenn mir hier jemand auf die Sprünge helfen kann. Wie schon erwähnt, ich bin absoluter Anfänger….
Habe hier eine Mustermappe abgelegt:
https://www.herber.de/bbs/user/116083.xlsb
Gruß Bernd

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: If AND Then und keine Ahnung wie
07.09.2017 13:39:54
Bernd
Ich habe gerade bemerkt, dass ich das Makro noch gar nicht fterig hatte. Hier nun denn die korrigierte Version:
https://www.herber.de/bbs/user/116084.xlsb
Gruß Bernd
AW: If AND Then und keine Ahnung wie
07.09.2017 13:40:12
Bernd
Ich habe gerade bemerkt, dass ich das Makro noch gar nicht fterig hatte. Hier nun denn die korrigierte Version:
https://www.herber.de/bbs/user/116084.xlsb
Gruß Bernd
AW: If AND Then und keine Ahnung wie
07.09.2017 13:50:05
EtoPHG
Hallo Bernd,
Nur schon an den Daten in deiner Beispielmappe merkt man, um was es dir primär geht.
Das ist alles mit einfachen Standardformeln (SVERWEIS, VERGLEICH, INDEX) lösbar.
Warum bei dir VBA und Schleifen im Vordergrund stehen, ist mit schleierhaft.
Mit VBA sollte man sich erst gründlich befassen, wenn man mit den Standardfunktionalitäten nicht mehr weiterkommt!
Gruess Hansueli
Anzeige
AW: If AND Then und keine Ahnung wie
07.09.2017 13:54:26
Bernd
Hallo Hansueli,
auch wenn es Dir schleierhaft ist, es gibt einen ganz simplen Grund, warum dieses Problem mit VBA gelöst werden soll: Ich will keine Formeln im Blatt haben.
Gruß Bernd
Dann viel Glück.... mit VBA...offen
07.09.2017 14:10:40
EtoPHG
Hallo Bernd,
Ich setze deine Anfrage auf offen, weil mir diese Begründung nicht genug wert ist, einen Codevorschlag zu machen!
Gruess Hansueli
AW: Dann viel Glück.... mit VBA...offen
07.09.2017 14:25:36
Bernd
Hallo Hansueli,
deine Antwort erstaunt mich dann doch ziemlich. Mir ist natuerlich klar, dass die Leute hier im Forum unentgeltlich und in ihrer teuren Freizeit Hilfestellung geben. Ich habe im Laufe der letzten Jahre doch schon eine Menge in diversen Foren gelernt, was Excel und VBA angeht. Und ich moechte auch wirklich nicht unhoeflich sein, aber was bitte ist denn Wert genug, eine Antwort an Stelle einer Belehrung auf meine Frage zu bekommen? Da ich mein Problem in VBA soweit geloest habe, dass es zumindest funktionsfaehig ist, koennte fuer den aufmerksamen Leser ein Indiz sein, dass ich schon ein wenig mit Excel und auch ein wenig mit VBA kann. Mein Loesungsweg ist nun einmal ganz simpel Learning by doing. Und wenn dieser Kommentar nun dazu fuehrt, dass es in diesem Forum keine Hilfestellung fuer mich gibt, dann waere es zwar schade, aber ich habe mir zumindest Luft verschafft.
Gruss Bernd
Anzeige
AW: Dann viel Glück.... mit VBA...offen
07.09.2017 14:29:04
Bernd
Hallo Hansueli,
deine Antwort erstaunt mich dann doch ziemlich. Mir ist natuerlich klar, dass die Leute hier im Forum unentgeltlich und in ihrer teuren Freizeit Hilfestellung geben. Ich habe im Laufe der letzten Jahre doch schon eine Menge in diversen Foren gelernt, was Excel und VBA angeht. Und ich moechte auch wirklich nicht unhoeflich sein, aber was bitte ist denn Wert genug, eine Antwort an Stelle einer Belehrung auf meine Frage zu bekommen? Da ich mein Problem in VBA soweit geloest habe, dass es zumindest funktionsfaehig ist, koennte fuer den aufmerksamen Leser ein Indiz sein, dass ich schon ein wenig mit Excel und auch ein wenig mit VBA kann. Mein Loesungsweg ist nun einmal ganz simpel Learning by doing. Und wenn dieser Kommentar nun dazu fuehrt, dass es in diesem Forum keine Hilfestellung fuer mich gibt, dann waere es zwar schade, aber ich habe mir zumindest Luft verschafft.
Gruss Bernd
Anzeige
AW: Dann viel Glück.... mit VBA...offen
07.09.2017 14:34:04
Bernd
Im Uebrigen habe ich mal wieder vergessen, die Frage als ungeloest zu deklarieren
VBA
07.09.2017 14:50:10
Peter
Hallo,
Hier deine Mappe mit UF und Code: https://www.herber.de/bbs/user/116091.xlsm
Modul Code:
Option Explicit
Private worksheet_ As Worksheet
Public Sub TransferData(ByVal Search As String)
Dim array_() As String
Set worksheet_ = ThisWorkbook.Sheets("Setup-User")
array_ = GetUserData(Search)
Set worksheet_ = Nothing
If Not IsEmpty(array_) Then DataToSheet array_
End Sub
Private Function GetUserData(ByVal Search As String) As Variant
Dim array_() As String
Const size_ As Long = 7
Dim userRow As Long: userRow = GetRow(Search)
Dim i As Long
If userRow >= 1 Then
With worksheet_
ReDim array_(size_)
For i = 3 To 10
array_(i - 3) = .Cells(userRow, i).Value
Next i
End With
End If
GetUserData = array_
End Function
Private Function GetRow(ByVal Search As String) As Long
Dim rng, c As Range
Dim lRow As Long
With worksheet_
lRow = .Cells(.Rows.Count, 3).End(xlUp).Row
Set rng = .Range(.Cells(4, 3), .Cells(lRow, 3))
Set c = rng.Find(Search, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then GetRow = c.Row
End With
Set c = Nothing
Set rng = Nothing
End Function
Private Sub DataToSheet(ByRef UserData() As String)
Dim i As Long
If UBound(UserData) 

Wenn etwas nicht so abläuft wie gewünscht, dann passe es selber an.
Wer VBA will, weil er keine Formeln im Sheet haben will, der muss sich damit auch
außeinander setzen und es wenigstens ein wenig lernen.
Mit dem Debugger kannst du alles schritt für schritt durchgehen und dir angucken
was gemacht wird.
Anzeige
AW: VBA
07.09.2017 14:54:01
Bernd
Hallo Peter,
vielen Dank. Werde mich sofort darueber her machen. Ich habe absolut nichts dagegen, mich damit auseinanderzusetzen um es zumindest ein wenig zu lernen. Und mit ein wenig Hilfestellung, die ja natuerlich gar nicht so wenig ist, hat sie schliesslich deine Zeit gekostet, habe ich einen fuer mich sinnvollen Ansatz um dem Ganzen auf den Grund zu gehen.
Also noch einmal vielen Dank
Gruss Bernd
AW: Daten suchen u. übertragen
07.09.2017 15:05:29
Gerd
Hallo Bernd,
noch etwas Einfaches zum Kern deines Problems.
Sub Datentransfer()
Dim wsS As Worksheet
Dim Erkannter_User As String
Dim Mandant As Long
Dim Datenzeile As Long
Set wsS = Worksheets("Setup")
Set wsA = Worksheets("Anschreiben")
Erkannter_User = wsS.Range("A2").Value
Mandant = wsS.Range("B2").Value
For Zeile = 4 To wsS.Cells(wsS.Rows.Count, 2).End(xlUp).Row
If wsS.Cells(Zeile, 2) & wsS.Cells(Zeile, 3) = Mandant & Erkannter_User Then
Datenzeile = Zeile
Exit For
End If
Next
If Datenzeile = 0 Then MsgBox "Prüfen": Exit Sub
wsA.Range("F6:F11").ClearContents
wsA.Range("F6").Value = wsS.Cells(Datenzeile, 4).Value
End Sub
Gruß Gerd
Anzeige
AW: Daten suchen u. übertragen
07.09.2017 16:08:51
Bernd
Hallo Gerd,
habe deinen Loesungsweg eben erst gesehen. Vielen Dank dafür. Jetzt mache ich erst einmal Feierabend und fahre gen Heimat. Werde mich dann aber zu Hause auch damit noch auseinander setzen. Mit dem Weg von Peter bin ich schon recht weit gekommen und habe den Code jetzt schon mal in der Originalmappe. Ich werde berichten, wie der Stand der Dinge ist, damit ihr fleissigen Helfer auch seht, dass mein Leben nicht nur aus abschreiben besteht.
Bis dahin Gruss Bernd
AW: Daten suchen u. übertragen
07.09.2017 17:58:54
Bernd
Hallo Gerd,
nun ich noch einmal. Habe mir soeben den Code angeschaut und aber sowas von sofort verstanden, was er tun wird. 2 kleine Anpassungen und nun läuft es so, wie ich es mir gedacht habe, herzlichen Dank.
so sieht's nun aus:
Option Explicit
Sub Datentransfer()
Dim wsS As Worksheet
Dim wsA As Worksheet
Dim Erkannter_User As String
Dim Mandant As Long
Dim Datenzeile As Long
Dim Zeile As Long
Set wsS = Worksheets("Setup-User")
Set wsA = Worksheets("Anschreiben")
Erkannter_User = wsS.Range("A2").Value
Mandant = wsS.Range("B2").Value
For Zeile = 4 To wsS.Cells(wsS.Rows.Count, 2).End(xlUp).Row
If wsS.Cells(Zeile, 2) & wsS.Cells(Zeile, 3) = Mandant & Erkannter_User Then
Datenzeile = Zeile
Exit For
End If
Next
If Datenzeile = 0 Then MsgBox "Prüfen": Exit Sub
wsA.Range("F6:F11").ClearContents
wsA.Range("F6").Value = wsS.Cells(Datenzeile, 4).Value
wsA.Range("F7").Value = wsS.Cells(Datenzeile, 5).Value
wsA.Range("F8").Value = wsS.Cells(Datenzeile, 6).Value
wsA.Range("F9").Value = wsS.Cells(Datenzeile, 7).Value
wsA.Range("F10").Value = wsS.Cells(Datenzeile, 8).Value
wsA.Range("F11").Value = wsS.Cells(Datenzeile, 9).Value
wsA.Range("A38").Value = wsS.Cells(Datenzeile, 10).Value & wsS.Cells(Datenzeile, 4).Value
End Sub
Nochmals besten Dank und Gruss Bernd
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige