MS-Office-Forum
Google
   

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 01.02.2018, 23:00   #46
Beverly
MOF Guru
MOF Guru
Standard

Hi,

wenn das Code-Problem nur in der freigegebenen Mappe auftritt, dann sehe ich nur eine Lösungsmöglichkeit: du musst als Betreuer der Mappe von Zeit zu Zeit von Hand die Formelergebnisse in Werte umwandeln oder du führst folgendes Makro aus, wenn du die Freigabe aufgehoben hast

Code:

Sub Umwandeln()
    Dim lngLetzte As Long
    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count) - 1
    Range(Cells(6, 2), Cells(lngLetzte, 23)).Copy
    Cells(6, 2).PasteSpecial Paste:=xlValues
End Sub

GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 03.02.2018, 20:02   #47
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi,

super, das probiere ich am Montag direkt mal aus.
Werde den Code dann noch so erweitern, dass durch das ausführen des Makro die Freigabe aufgehoben wird, das Makro ausgeführt und die Mappe wieder freigegeben wird.

Ich selbst bin nicht jeden Tag an der Arbeit an dieser Tabelle beteiligt, deshalb werde ich noch eine MSG Box erstellen, in der steht, dass das Makro als letztes bei jedem Feierabend durch den letzten Anwender durchgeführt werden muss.

Ich werde es dann mal eine Woche lang Testen und schauen wie es funktioniert.
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 04.02.2018, 09:04   #48
Beverly
MOF Guru
MOF Guru
Standard

Das kannst du in dem Fall auch ins Workbook_BeforeClose-Ereignis schreiben (ungetestet):

Code:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim bytAbfrage As Byte
    bytAbfrage = MsgBox("Änderungen speichern?", vbCritical + vbYesNoCancel, "Speicherabfrage")
    ' Speichern: Ja
    If bytAbfrage = 6 Then
        ActiveWorkbook.ExclusiveAccess
        Umwandeln
        ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.FullName, accessMode:=xlShared
    ' Speichern: Nein
    ElseIf bytAbfrage = 7 Then
        ActiveWorkbook.Close False
    ' Speichern: Abbrechen
    ElseIf bytAbfrage = 2 Then
        Cancel = True
    End If
End Sub


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2018, 20:25   #49
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi

Ich habe deinen Cade

Code:

Sub Umwandeln()
    Dim lngLetzte As Long
    lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count) - 1
    Range(Cells(6, 2), Cells(lngLetzte, 23)).Copy
    Cells(6, 2).PasteSpecial Paste:=xlValues
End Sub

mal so für mich angepasst


Code:

Sub Umwandeln()

Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count) - 1
Range(Cells(6, 3), Cells(lngLetzte, 23)).Copy
Cells(6, 3).PasteSpecial Paste:=xlValues
Range(Cells(6, 29), Cells(lngLetzte, 227)).Copy
Cells(6, 29).PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Range("D6").Select
End Sub

da er mir nach dem ausführen einen Rahmen um die Tabelle gemacht hat. Der Rahmen sieht so aus, wie wenn man eine Zelle oder einen Bereich kopieren will.

mit dem Teil des Codes geht er weg und die ausgewählte Zelle springt in D6


Code:

Application.CutCopyMode = False
Range("D6").Select

Hoffe es war richtig aber vielleicht gibt es da noch eine andere Lösung.


Dein Code funktioniert auch super wenn die Mappe freigegeben ist. :-)


Kann man den Code jetzt noch so anpassen, dass die Zellen nach umfandeln der Formel in Werte von Zelle 30 bis Zelle 222 gelöscht werden?
Weiß nicht wie der Code dann aussehen muss und an welcher stelle im Code es dann stehen muss.

Was ganz wichtige wäre bei dem Code, das die letzte Zeile die neu kopiert wurde die Formeln erhalten bleiben?
Denn dann kann ich den Code zwischendurch laufen lassen und weitere Einträge trotzdem noch in der letzten Zeile eingeben . Bis jetzt werden ja alle Formeln in Werte umgewandelt und wenn in der letzten Neu kopierten Zeile keine Einträge sind werden dort alle Formeln gelöscht.

Geändert von Boost12 (06.02.2018 um 21:13 Uhr).
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 06.02.2018, 22:29   #50
Beverly
MOF Guru
MOF Guru
Standard

Was sind Zelle 30 bis Zelle 222 und was soll da gelöscht werden?

Der Code - so wie er jetzt ist - ersetzt doch die Formeln nur bis zur vorletzten Zeile, also bleiben die Formeln in der letzten Zeile erhalten - ich verstehe also nicht, wo das Problem ist.


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 22:23   #51
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi!

Ja habe heute den Fehler gefunden.
Da ich ganz unten in Zeile 66 einen kleinen Text geschrieben hatte hat der Code diese Zeile natürlich als letzte Zeile betrachtet.

Sorry, an den Text hatte ich gar nicht mehr gedacht.


Wegen meiner anderen Frage zu Spalte 30 bis 222 melde ich mich morgen nochmal.
Ich glaube, da ist mir eben eine Lösung eingefallen.

Hoffe, dass wir es bald geschafft haben. :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.02.2018, 21:06   #52
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hi!

Habe es geschafft, das mir meine Zellen von Spalte 30 bis 222 gelöscht werden, wenn sie in Werte umgewandelt werden.

hier mal der Code


Code:

Sub löschen()
' löschen Makro
    Range("AC5:HN65").SpecialCells(xlCellTypeConstants).ClearContents
End Sub
Habe deinen Code der mir die neue nächste Zeile nach unten kopiert etwas abgeändert da es ja ein Problem mit ihm gibt, wenn man den Code in der freigegebenen Mappe ausführen will.

So funktioniert er ohne Probleme

Code:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Select Case Target.Column
Case 4
If Target.Count = 1 Then
If Target <> "" Then
If Target.Offset(-1, 0) <> "" And Target.Offset(1, 0) = "" Then
Application.EnableEvents = False
' kopieren in die nächste Zeile
Range(Cells(Target.Row, 2), Cells(Target.Row, 227)).Copy Cells(Target.Row + 1, 2)
' alle Zellen die keine formeln enthalten leeren
Range(Cells(Target.Row + 1, 3), _
Cells(Target.Row + 1, 23)).SpecialCells(xlCellTypeConstants).ClearContents
' in Spalte C nächste Numemr eintragen
Cells(Target.Row + 1, 3) = Cells(Target.Row, 3) + 1
                End If
                 Application.EnableEvents = True
                End If
            End If
        Target.Offset(1, 0).Select
    Case 9, 11, 13, 15, 17
        Target.Offset(0, 1).Value = Time
    End Select
End Sub
Jedoch musste ich den Teil löschen, der für die doppelten Werte wichtig war.
Wenn ich den Code so übernehme, bricht der Code beim ausführen in der freigegebenen Mappe ab und man kann den Debugger nicht öffnen.

Code:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim lngLetzte As Long
Dim intZaehler As Integer
    Select Case Target.Column
        Case 4
            If Target.Count = 1 Then
            If Target <> "" Then
            If Target.Offset(-1, 0) <> "" And Target.Offset(1, 0) = "" Then
                lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)
                Application.EnableEvents = False
        ' kopieren in die nächste Zeile
        Range(Cells(Target.Row, 2), Cells(Target.Row, 227)).Copy Cells(Target.Row + 1, 2)
        ' alle Zellen die keine formeln enthalten leeren
        Range(Cells(Target.Row + 1, 3), _
        Cells(Target.Row + 1, 23)).SpecialCells(xlCellTypeConstants).ClearContents    
       ' in Spalte C nächste Numemr eintragen
        Cells(Target.Row + 1, 3) = Cells(Target.Row, 3) + 1
         ' wenn S5 eine bedingte Formatierung enthält
        If Cells(5, 19).FormatConditions.Count > 0 Then
         ' alle bedingten Formatierungen ab Zeile 6 löschen
        Range(Cells(6, 19), Cells(lngLetzte, 19)).FormatConditions.Delete
        ' Schleife über alle bedingten Formatierungen Zelle S5
        For intZaehler = 1 To Cells(5, 19).FormatConditions.Count
       ' neuen Bereich festlegen
        Cells(5, 19).FormatConditions(intZaehler).ModifyAppliesToRange Range("S$5:$S$" & lngLetzte)
                    Next intZaehler
                End If
                 Application.EnableEvents = True
                End If
            End If
        End If
        Target.Offset(1, 0).Select
    Case 9, 11, 13, 15, 17
        Target.Offset(0, 1).Value = Time
    End Select
End Sub
Gibt es da vielleicht eine andere Möglichkeit?
Das ich die doppelten Werte in der Spalte S mit einem Makro durch betätigen eines Buttons ermitteln und farblich rot makieren kann?

Der Coder zum Umwandeln der Formeln in Werte klappt ohne Probleme.
Hier nochmal der Code, angepasst an meine Tabelle.

Code:

Sub Umwandeln()
Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count) - 1
Range(Cells(6, 3), Cells(lngLetzte, 23)).Copy
Cells(6, 3).PasteSpecial Paste:=xlValues
Range(Cells(5, 30), Cells(lngLetzte, 227)).Copy
Cells(5, 30).PasteSpecial Paste:=xlValues
Range("D6").Select
End Sub

Du hattest mir auch einen Code geschrieben, der verhindern soll, dass die Anwender, Zellen in denen eine Formel steht nicht auswählen können.
Dies funktioniert auch ohne Probleme.

Dann hattest du hin erweitert, dass auch Zellen in denen die Formeln in Werte umgewandelt werden nicht auswählbar sein sollten.

Jedoch funktioniert dieser Code nicht.
Es können weiterhin Zellen mit Formeln nicht ausgewählt werden aber immer noch die Zellen in denen nun Werte stehen.

Code:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lngLetzte As Long
lngLetzte = IIf(IsEmpty(Cells(Rows.Count, 3)), Cells(Rows.Count, 3).End(xlUp).Row, Rows.Count)
If Cells(Target.Cells(1).Row, Target.Cells(1).Column).HasFormula Then Target.Offset(0, 1).Select
End Sub
Kann man dies vielleicht noch ändern und so anpassen, das die Zellen in denen vorher Formeln standen und nun Werte stehen nicht von Anwender auswählbar sind?

Die Spalten um die es geht wären die Spalten E,F,G,H,S und T und vielleicht noch die Spalte C in der die laufende Nummer steht.

Wenn die Zwei Sachen 1. doppelte Werde ermitteln = rot und 2. nicht auswählbar der genannten Spalten funktioniert haben wir es bzw du :-) endlich geschafft.

Ich danke dir und wünsche dir ein schönes Wochenende.

lg :-)
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.02.2018, 09:30   #53
Beverly
MOF Guru
MOF Guru
Standard

Hast du das VBA-Projekt mit einem Passwort geschützt? Darin liegt dann die Ursache, dass der Code mit einem Fehler abbricht und der Debugger nicht auswählbar ist.

Den Code für die Nichtauswählbarkeit von Zellen mit Formeln hatte ich in meinem Beitrag vom 23.01.2018, 22:14 korrigiert - du verwendest jedoch noch die fehlerhafte Version. Zu ändern ist der rot formatierte Teil:

Code:

If Cells(lngLetzte, Target.Cells(1).Column).HasFormula Then Target.Offset(0, 1).Select


GrußformelBeverly's Excel - Inn

__________________

Bitte im Beitrag eine kurze Rückmeldung auch in dem Fall geben, wenn ein Problem gelöst wurde - dies hilft auch anderen Usern, wenn sie den betreffenden Thread lesen.
Möchtest du dich außerdem für die Hilfe bei der Lösung deines Problems bedanken? Das kannst du ganz einfach durch die Bewertung eines Beitrags (Schalter unten links).
Beverly ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.02.2018, 18:18   #54
Boost12
Threadstarter Threadstarter
MOF User
MOF User
Standard

So Hi!

Konnte es heute leider erst überprüfen.

Nein ich habe kein Passwort vergeben.

Habe es jetzt anders mit den doppelten Werten gelöst. Habe ganz normal in den bedingten Formatierungen die Zellen und Zeilen angegeben auf denen sie angewendet werden sollen.

Das hat heute schon mal gut geklappt.


Und danke nochmal für deine Erinnerung. Das hatte ich schon wieder vergessen.
Der Code mit der Zeile

Code:

If Cells(lngLetzte, Target.Cells(1).Column).HasFormula Then Target.Offset(0, 1).Select
läuft auch sehr gut und ohne Probleme.

So wie es aussiehst läuft die Tabelle mit allen Funktionen und Codes sehr gut.
Werde sie jetzt mal bis Ende des Monats in realer Anwendung testen.

Werde mich dann gern nochmal melden und das Ergebnis mitteilen ob sie stabil läuft.

Ich sage schon mal tausend DANK für deine lange Hilfe. :-)

lg
Boost12 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.