Microsoft Excel – die neusten Beiträge

In Excel Makros aus aktiven Sheet löschen?

Ich Möchte ein Tabellenblatt neben das Original kopieren, in dem man nichts mehr ändern kann, aber anschliesssend die Sub Makros aus der Kopie Löschen, da sonnst die Datie zu groß wird. Das Kopieren funktioniert super, nur mit den Makros entfernen noch nicht so.

Das ist mein Code zum Kopieren, Danke

Sub NeuesTabBlatt()
' Monate Soll
 If MsgBox("Wollen Sie wirklich einen neuen Sollplan erstellen?", vbYesNo) = vbYes Then
 If InputBox("geben sie Bitte das Passwort zum Entsperren ein", "  Sollplanerstellung") = "1234" Then
        MsgBox "OK, der Sollplan wird erstellt"
 Else
 MsgBox "Hier kommst Du net rein!"
 ActiveSheet.Range("$A$1").Select
 Exit Sub
 End If
Application.ScreenUpdating = False
Application.Calculation = False
Dim NewName As String
ActiveWorkbook.Unprotect Password:="1234"
NewName = ActiveSheet.Range("$CW$1")
ActiveSheet.Copy After:=ActiveSheet
 ActiveSheet.Name = "Soll" & " " & ActiveSheet.Range("CW1")
  ActiveSheet.Range("AT127:AV134,AQ133:AS133, AT183:AV186, AT228:AV232").Clear
       ZeilenEinUndAusblenden
    ActiveSheet.EnableSelection = xlNoSelection
   ActiveSheet.Protect Password:="1234", DrawingObjects:=True, Contents:=True, Scenarios:=True
   ActiveSheet.Visible = False
  ActiveWorkbook.Protect "1234", Structure:=True
  Application.Calculation = xlAutomatic
 Application.ScreenUpdating = True
 MsgBox "ein neues SOLL Tabellenblatt wurde erstellt"
 End If
 'BlätterSollEinAus
 ActiveSheet.Range("$A$1").Select
End Sub 
Microsoft Excel, VBA

Excel VBA: Tabellenblätter bei gewissen Zellenwert ausblenden?

Hallo Zusammen,

Ich will mittels VBA ein Excel modifizieren, damit möglichst wenige Tabellenblätter angezeigt werden. In einem Tabellenblatt (z.B. "Auswahl") habe ich die Zellen C62, C88 und C114, die jeweils ein spezielles Tabellenblatt anzeigen sollen. Jedoch gibt es im Moment nur LZF-Meldungen.

Es soll jeweils bei "Yes" nichts angezeigt, bei "No" die entsprechende Tabelle eingeblendet werden.

Ansonsten sollen die "nicht betroffenen" Tabellen ausgeblendet bleiben

Hier der Code im Worksheet "DieseArbeitsmappe":

Private Sub Worksheet_Open()

'Beim Öffnen des Excels die betroffenen Blätter ausblenden
    ThisWorkbook.Worksheets("Tabelle4").Visible = False 
    ThisWorkbook.Worksheets("Tabelle5").Visible = False
    ThisWorkbook.Worksheets("Tabelle6").Visible = False
    
End Sub

In Blatt "Auswahl" (Tabelle7) habe ich folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)

   

‘Hier sind vorher noch andere IF-Regeln hinterlegt, die nur Reihen in Tabelle7 ein/ausblenden

   

    If Range("C62").Value = "No" Then 'Tabellenblätter einblenden, sobald in der jeweiligen Zelle "No" ausgewählt wird

        ThisWorkbook.Worksheets("Tabelle6").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle6").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

    If Range("C88").Value = "No" Then

        ThisWorkbook.Worksheets("Tabelle5").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle5").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

    If Range("C114").Value = "No" Then

        ThisWorkbook.Worksheets("Tabelle4").Visible = True

       

        Else

        ThisWorkbook.Worksheets("Tabelle4").Visible = False ‘Hier erhalte ich jeweils ein LZF 9?

    End If

   

End Sub

Weshalb gibt es jeweils einen Fehler und wie kann ich diesen am einfachsten beheben?

Vielen Dank, Michael

Microsoft Excel, programmieren, Makro, VBA

Excel Feiertage einfaerben, bedingte Formatierung?

Hallo,

ich habe eine Tabelle "2022" (koennte ich auch "Jahr" benennen oder so), in der in Spalte "A" das Datum berechnet wird.

Ab Spalte "B" werden Zahlen eingetragen und berechnet.

In "A6" steht der 01.01.2022 und die Spalte ist mit Datum TT.MM.JJJJ formatiert.

In "A7" ist die Formel =A6+1 drin, in "A8" =A7+1, usw. bis "A36", dem 31. Januar des Jahres.

In Zeile 37 werden die Zahlen ab Spalte "B" (von "A6" bis "A36") summiert.

Zeile 38 ist leer und dient nur zur optischen Trennung zwischen Januar und Februar.

In "A39" ist dann die Formel =DATUM(JAHR(A6);MONAT(A6)+1;1) die den 01. Februar des Jahres berechnet.

Ab "A40" geht es dann wie in Zeile 7 analog bis Zeile 66 fuer den 28. Februar weiter.

In "A41" ist dann die Formel =WENN(TAG(A66+1)=1;"";A66+1) fuer die Berechnung des 29. Februar drin.

In Zeile 68 werden die Zahlen ab Spalte "B" summiert.

Zeile 69 ist leer und dient nur zur optischen Trennung zwischen Februar und Maerz.

In "A70" ist dann die Formel =DATUM(JAHR(A6);MONAT(A6)+2;1) die den 01. Maerz des Jahres berechnet.

Das funktioniert alles bis zum 31. Dezember in "A393".

Mit bedingter Formatierung werden auch die Samstage und Sonntage entsprechend in der Spalte "A" eingefaerbt.

Jetzt habe ich versucht, dass sich auch die Feiertage, vor allem auch die variablen, per bedingter Formatierung einfaerben sollen.

Dazu habe ich ein weiteres Tabellenblatt "Feiertage" wie folgt angelegt.

In Zelle "A1" steht die Ueberschrift "Feiertag" drin, und in den Zeilen darunter, welcher Feiertag.

In Zelle "B1" wir Jahreszahl des entsprechenden Jahres als Zahl z.B. 2022 eingetragen, Zelle ist als zahl formatiert.

In Zelle "C1" steht die Ueberschrift "Anmerkungen" drin, welcher Feiertag oder sonstiges, in den Zeilen darunter.

In Zelle "D1" steht die Ueberschrift "Formel" drin, und darunter habe ich mir die entsprechenden Formel von Spalte "B" sichtbar dargestellt.

Ich habe noch keine funktionierende Formel gefunden, um in Blatt "2022" die Feiertage in Spalte "A" aus dem Blatt "Feiertage" zu vergleichen und per bedingter Formatierung einzufaerben. Zum Beispiel mit "SVERWEIS".

Vielen Dank schonmal, fuer hilfreiche Antworten.

p.s.: Schnellposter ohne hilfreiche Antworten melde ich.

Hier ein Ausschnitt der Tabelle "Feiertage"

Hier ein Ausschnitt der Tabelle "2022" vom Januar

Hier ein Ausschnitt der Tabelle "2022" vom Februar 2022

Und hier ein Ausschnitt der Tabelle "2022" vom Februar 2024 (29. Februar erscheint)

Bild zum Beitrag
Microsoft Excel, bedingte-formatierung

Maximale Pfadlänge in Windows und VBA umgehen?

Hallo,

ich benutze folgenden Code in Excel VBA um mir Dateipfad und Dateiname eines Ordners und allen darin enthaltenen Unterordnern aufzulisten.
(Ihr könnt es testen, den Code einfach in ein Modul kopieren, "MainList" ausführen und einen Ordner eurer Wahl auswählen)

Ich habe jetzt das Problem, dass dieser Code alle Dateien überspringt, deren Pfadlänge über 255 Zeichen lang ist. Einige Dateien überschreiten nämlich die 255 Zeichen mit dem angehängten Dateinamen.
Sie liegen aber dennoch ab. Nur liest VBA diese nicht aus. Kann man da was dran machen?

Sub MainList()
'Updateby Extendoffice
Set Folder = Application.FileDialog(msoFileDialogFolderPicker)
If Folder.Show <> -1 Then Exit Sub
xDir = Folder.SelectedItems(1)
Call ListFilesInFolder(xDir, True)
End Sub

Sub ListFilesInFolder(ByVal xFolderName As String, ByVal xIsSubfolders As Boolean)
Dim xFileSystemObject As Object
Dim xFolder As Object
Dim xSubFolder As Object
Dim xFile As Object
Dim rowIndex As Long
Set xFileSystemObject = CreateObject("Scripting.FileSystemObject")
Set xFolder = xFileSystemObject.GetFolder(xFolderName)
rowIndex = Application.ActiveSheet.Range("A65536").End(xlUp).Row + 1
For Each xFile In xFolder.Files
  Application.ActiveSheet.Cells(rowIndex, 1).Formula = xFile.Path
  Application.ActiveSheet.Cells(rowIndex, 2).Formula = xFile.Name
  rowIndex = rowIndex + 1
Next xFile
If xIsSubfolders Then
  For Each xSubFolder In xFolder.SubFolders
    ListFilesInFolder xSubFolder.Path, True
  Next xSubFolder
End If
Set xFile = Nothing
Set xFolder = Nothing
Set xFileSystemObject = Nothing
End Sub

Function GetFileOwner(ByVal xPath As String, ByVal xName As String)
Dim xFolder As Object
Dim xFolderItem As Object
Dim xShell As Object
xName = StrConv(xName, vbUnicode)
xPath = StrConv(xPath, vbUnicode)
Set xShell = CreateObject("Shell.Application")
Set xFolder = xShell.Namespace(StrConv(xPath, vbFromUnicode))
If Not xFolder Is Nothing Then
  Set xFolderItem = xFolder.ParseName(StrConv(xName, vbFromUnicode))
End If
If Not xFolderItem Is Nothing Then
  GetFileOwner = xFolder.GetDetailsOf(xFolderItem, 8)
Else
  GetFileOwner = ""
End If
Set xShell = Nothing
Set xFolder = Nothing
Set xFolderItem = Nothing
End Function
Computer, Windows, Microsoft, Datei, Microsoft Excel, programmieren, VBA

Meistgelesene Beiträge zum Thema Microsoft Excel