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

Problem XL 2016 - XL 2010

Problem XL 2016 - XL 2010
14.04.2020 10:58:08
KrisM
Hallo zusammen,
ich habe ein Problem mit folgendem Code:
Option Explicit
Public Sender As String

Function Sender_ermitteln()                                                     'temporär wegen  _
_
_
RD-Farm
Dim oADInfo As Object
Dim sUserName As String
Dim oUser As Object
Dim sMailAdd As String
Dim sName As String
' Auslesen der Daten aus dem Active Directory
Set oADInfo = CreateObject("ADSystemInfo")
sUserName = oADInfo.UserName
Set oUser = GetObject("LDAP://" & sUserName)
' Filterung bestimmter Daten
' cn = der Name, für jedes Objekt gibt es eine Abkürzung
sMailAdd = oUser.mail
sName = oUser.cn
Sender = oUser.mail
Set oUser = Nothing
Set oADInfo = Nothing
End Function


Function Sortieren()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Empfänger").Visible = True
Sheets("Empfänger").Activate
Worksheets("Empfänger").Columns("A:C").Sort , Key1:=Range("A1"), _
Key2:=Range("B1"), Order1:=xlAscending, Header:=xlNo
Sheets("Empfänger").Visible = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Function


Function Sortieren2()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Empfänger").Visible = True
Sheets("Empfänger").Activate
Worksheets("Empfänger").Columns("A:C").Sort , Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlNo
Sheets("Empfänger").Visible = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Function


Function Datum()
With UF_Gesprächsnotiz
.tb_datum.Value = Date
.tb_uhrzeit.Value = Time
End With
End Function


Function Dokument_leeren()
Dim objControl As Control
With UF_Gesprächsnotiz
For Each objControl In .Controls
Select Case TypeName(objControl)
Case "TextBox"
objControl.Text = ""
Case "ComboBox"
objControl.ListIndex = -1
Case "CheckBox"
objControl.Value = False
Case "OptionButton"
objControl.Value = False
End Select
Next
End With
Datum
End Function


Function senden(ByVal Nachricht As String)
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = UF_Gesprächsnotiz.tb_EmailAdresse.Value
.Subject = "Gesprächsnotiz"
.Body = Nachricht
.Send 'Sendet die Email automatisch
End With
Set objOutlook = Nothing
Set objMail = Nothing
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = Sender
.Subject = "Kopie - Gesprächsnotiz"
.Body = Nachricht
.Send 'Sendet die Email automatisch
End With
Set objOutlook = Nothing
Set objMail = Nothing
End Function


Function Protokoll_ordner()
Dim path As String
path = Environ("USERPROFILE") & "\Documents\Koetter_Excel_Files"
If Dir(path, vbDirectory) = "" Then
MkDir (path)
MkDir (path & "\Gesprächsnotizen")
ElseIf Dir(path & "\Gesprächsnotizen", vbDirectory) = "" Then
MkDir (path & "\Gesprächsnotizen")
ElseIf Dir(path & "\Gesprächsnotizen\Protokolle", vbDirectory) = "" Then
MkDir (path & "\Gesprächsnotizen\Protokolle")
End If
End Function

Dieser funktioniert unter Excel 2016 wunderbar. Leider wird in Excel 2010 ein Fehler in Modul 1 (das ist der Code) angezeigt. Auf Grund administrativer Vorgaben, kann ich den Editor nicht öffnen um zu schauen wo der Fehler auftritt. Hat jemand von euch eine Idee, oder kann den Code prüfen?
Liebe Grüße

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

Betreff
Datum
Anwender
Anzeige
AW: Problem XL 2016 - XL 2010
14.04.2020 18:26:39
fcs
Hallo Kris,
Auf Grund administrativer Vorgaben, kann ich den Editor nicht öffnen
Da wird dir ein Gespräch mit deinem Admin wohl nicht erspart bleiben.
Geht es bei der Fehlermeldung noch etwas genauer (Nummer / Text)?
Wurde nur für Excel ein Update gemacht oder auch ein Versions-Update von Windows?
Ist der im Makro vorgegebene Pfad "LDAP://" & sUserName noch vorhanden?
In den Sortiermakros ist eine Syntax vorhanden, die Probleme machen könnte:
1.
Vor "Key1" steht jeweils ein Komma. Gehört da nicht hin.
2.
Du verwendest Columns in Verbindung mit der A1-Schreibweise für Zellbereiche. Nicht empfehlenswert, denn eigentlich ist der Parameter für Columns ein numerischer Wert - manche VBA-Compiler schlucken das trotzdem. Besser mit Range arbeiten.
3.
Der Parameter für die Sortierreihenfolge ist nicht für alle zu sortierenden Spalten angegeben.
Allerdings würde ich hier in den Sortiermakros nicht mit Activate für die Blätter Arbeiten sondern konsequent mit den Objekten. Das Ein-/Ausblenden des Blattes kann man sich sparen. DisplayAlert und Screenupting vorübergehend zu deaktivieren ist auch nicht erforderlich.
LG
Franz
Korektur vorschlag:

Function Sortieren()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Empfänger").Visible = True
Sheets("Empfänger").Activate
Worksheets("Empfänger").Range("A:C").Sort Key1:=Range("A1"), Order1:=xlAscending, _
Key2:=Range("B1"), Order2:=xlAscending, Header:=xlNo
Sheets("Empfänger").Visible = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Function
Function Sortieren2()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Sheets("Empfänger").Visible = True
Sheets("Empfänger").Activate
Worksheets("Empfänger").Range("A:C").Sort Key1:=Range("B1"), _
Order1:=xlAscending, Header:=xlNo
Sheets("Empfänger").Visible = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Function

Vorschlag für Optimierung:
Function Sortieren()
With Worksheets("Empfänger")
If .UsedRange.Row + .UsedRange.Rows.Count - 1 > 1 Then
.Range("A:C").Sort Key1:=.Range("A1"), Order1:=xlAscending, _
Key2:=.Range("B1"), Order2:=xlAscending, Header:=xlNo
End If
End With
End Function
Function Sortieren2()
With Worksheets("Empfänger")
If .UsedRange.Row + .UsedRange.Rows.Count - 1 > 1 Then
.Range("A:C").Sort Key1:=.Range("B1"), Order1:=xlAscending, Header:=xlNo
End If
End With
End Function

Anzeige
AW: Problem XL 2016 - XL 2010
15.04.2020 09:19:02
KrisM
Hallo Franz,
vielen Dank für deine Hinweise. Ich hab die Datei geändert und mal weggeschickt, da der Kollege heute nicht vor Ort ist.
Zu Deinen Fragen:
Geht es bei der Fehlermeldung noch etwas genauer (Nummer / Text)?
Leider nein, es wurde keine Fehlernummer genannt. Nur das es beim Kompilieren einer Funktion in Modul1 einen Fehler gab.
Wurde nur für Excel ein Update gemacht oder auch ein Versions-Update von Windows?
Auf dem Zielrechner läuft Windows 7 mit Office 2010 (ältere Firmenrechner). Die Geräte sind nur im normalen Modus mit Updates versorgt worden. Es hat kein Upgrade stattgefunden.
Auf den anderen Rechnern läuft Windows 7 / 10 mit Office 2016 oder neuer (365). Auch diese werden normal durch MS mit Updates versorgt.
Ist der im Makro vorgegebene Pfad "LDAP://" & sUserName noch vorhanden?
Ich hoffe doch, da sich der Nutzer auch über die Firmendomäne anmelden muss.
In den Sortiermakros ist eine Syntax vorhanden, die Probleme machen könnte
Ich hatte mir den Code nur kopiert und an meine Bedürfnisse angepasst. Da dies gut funktioniert hat, habe ich nichts weiter geändert. Das "activate" hatte ich drin, weil ich mit der Sortierfunktion sonst Fehler hatte... aber ich kann mich leider nicht mehr erinnern, was da genau war. Ich meine aber, dass es im Zusammenhang mit dem Ausblenden des Blattes zusammenhing.
Sobald ich Rückmeldung vom Kollegen habe, melde ich mich nochmal. Eine Testversion von XL 2010 gibt es wohl nicht mehr zum Download, oder?
Anzeige
AW: Problem XL 2016 - XL 2010
15.04.2020 15:11:26
fcs
Hallo Kris,
Das "activate" hatte ich drin, weil ich mit der Sortierfunktion sonst Fehler hatte... aber ich kann mich leider nicht mehr erinnern, was da genau war. Ich meine aber, dass es im Zusammenhang mit dem Ausblenden des Blattes zusammenhing.
Userbild
Das Problem ist, dass die Spalte nach der sortiert werden soll keine Referenz zu einem Tabellenblatt hat.
Deshalb nimmt Excel das aktive Tabellenblatt als Referenz.
Bei einem ausgeblendeten Batt führt dies dann zu einem Fehler, da die Zelle mit der zu sortierenden Spalte innerhalb des zu sortierenden Zellbereichs liegen muss. Deshalb musst du in deinem Makro das Blatt einblenden und aktivieren, damit es funktioniert.
Dieses Manko hab ich in meiner optimierten Version bereinigt.
LG
Franz
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige