Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1320to1324
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

Zellenwert statt fixem Wert in VBA

Zellenwert statt fixem Wert in VBA
02.07.2013 08:11:43
Geza
Hallo,
dank der Hilfe in diesem Forum konnte ich einen VBA erstellen mit dem ich automatisch jeweils ein bestimmtes Blatt aus einer Datei als mail an einen bestimmten Mitarbeiter versendenwird mit Betreffzeile und e-mail adresse.
Nun möchte ich aber nur 1 blatt verschicken und diesen in einer Zelle eingeben
Wie könnte ich diesen Befehl umbauen so dass statt dem fixen Text der Inhalt einer bestimmten Zelle/Blatt erscheint?
Wäre sehr dankbar für Schützenhilfe
'Mail an Herr Wolfgang Bauer
'Statt „Herr Bauer“ Inhalt der Zelle F28, des Blattes „Aktualisieren“)
Sheets("Herr Bauer").Copy
ActiveSheet.UsedRange.Copy
ActiveSheet.UsedRange.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
'Statt „w.bauer@xy.de“ Inhalt der Zelle G28, des Blattes „Aktualisieren“)
'Statt „Herr Wolgang Bauer _ Ihre Tourenliste mit Aufträgen“ Inhalt der Zelle H28, Blatt „Aktualisieren“ActiveWorkbook.SendMail Array("w.bauer@xy.de"), "Herr Wolfgang Bauer - Ihre Tourenliste mit Aufträgen"
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True

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

Betreff
Datum
Anwender
Anzeige
AW: Zellenwert statt fixem Wert in VBA
02.07.2013 08:28:41
Klaus
Hi Geza,
Deine Frage beantwortet, es geht so:
'Mail an Herr Wolfgang Bauer
'Statt „Herr Bauer“ Inhalt der Zelle F28, des Blattes „Aktualisieren“)
Sheets(Sheets("Aktualisieren").Range("F28").Value).Copy
ActiveSheet.UsedRange.Copy
ActiveSheet.UsedRange.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
'Statt „w.bauer@xy.de“ Inhalt der Zelle G28, des Blattes „Aktualisieren“)
'Statt „Herr Wolgang Bauer _ Ihre Tourenliste mit Aufträgen“ Inhalt der Zelle H28, Blatt „ _
Aktualisieren“
ActiveWorkbook.SendMail Array(Sheets("Aktualisieren").Range("G28").Value), Sheets(" _
Aktualisieren").Range("H28").Value
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Das finde ich aber furchtbar unübersichtlich. Ich finde es immer besser, wenn Werte als Variablen übergeben werden, diese oben im Code deklariert. Das erleichtert das debuggen, weil man nicht durch den gesamten Code gehen muss falls sich was ändert. OK, bei einem 10-Zeilen-Code wie hier gehts nur ums Prinzip, aber egal. Ich habe ausserdem noch das doppel-Copy ersetzt. Es funktioniert in diesem Fall zwar (da Blatt-Kopie kein "paste" erwartet), sieht aber falsch aus. Ausserdem bilde ich mir immer noch ein, dass .value = .value schneller ist als .copy .pastespecial! (und wenn nicht, ist es immerhin kürzer!) Die DisplayAlert muss man manchmal ausschalten, das stimmt. In diesem Fall ist es aber nicht nötig, da die ausgeschaltete Frage (aktives Workbook speichern?) auch per VBA beantwortet werden kann. Hier mal der etwas optimierte Code:

Dim NameOfSheet As String
Dim AddressSendTo As String
Dim SubjectOfMail As String
With Sheets("Aktualisieren")
NameOfSheet = .Range("F28").Value
AddressSendTo = .Range("G28").Value
SubjectOfMail = .Range("H28").Value
End With
Sheets(NameOfSheet).Copy
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
Application.CutCopyMode = False
ActiveWorkbook.SendMail Array(AddressSendTo), SubjectOfMail
ActiveWindow.Close False
Was steht bei dir in Aktualisieren!F28? Hast du dort eine Auswahlliste? Wenn ja, ist das Makro gut wie es ist.
Wenn du, wie ich vermute, einfach eine Liste von F1 bis F100 mit Mailadressen und Namen hast, würd ich das noch anders gestalten ... dann kannst du dich ja nochmal melden!
Grüße,
Klaus M.vdT.

Anzeige
AW: Zellenwert statt fixem Wert in VBA
02.07.2013 08:51:25
Geza
Hallo Klaus
vielen Dank!! Dien Lösung sieht natürlich eleganter aus, bin halt in VBA wenig bewandert. Werde es heute abend gleich mal ausprobieren und Rückmeldung geben. Die Zellen welche der VBA ansteuert beinhalten eine Liste von werten welche der Anwender dann auswählen kann, bzw er wählt einen Wert aus , die andern Zellen füllen sich über ein Sverweis korrekt.
Besten Dank nochmals
Géza

Danke für die Rückmeldung! Bis heute abend :-)
02.07.2013 09:00:45
Klaus
Hi Geza,
die Zeile:
Application.CutCopyMode = False
kannst du auch noch rauswerfen! Da ich keinen Copy-Befehl mehr auf Zellen ausführe, muss dieser auch nicht abgeschaltet werden.
Wenn du mit Listen und SVERWEIS arbeitest ist es gut. Sonst hätte ich vorgeschlagen, den Code noch variabler zu gestalten, so dass zB per Schleife 100 Mails an 100 verschiedene Leute mit einem Knopf verschickt werden können.
Wenn du dich heute abend mit Rückfragen meldest, antworte ich morgen früh!
bin halt in VBA wenig bewandert.
Das macht ja nichts, dafür gibts ja herber.de :-)
Grüße,
Klaus M.vdT.
Anzeige

330 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige