218 Aufrufe
Gefragt in Tabellenkalkulation von jelena Mitglied (750 Punkte)
Bearbeitet von jelena
Hallo guten Tag, bitte um ein vba excel automatische spaltenbreite von Spalte q5 bis s50. Es sind 5 Tabellenblätter. Danke

8 Antworten

0 Punkte
Beantwortet von gunnar78 Einsteiger_in (49 Punkte)

Hallo Jelena,

das geht nicht, denn (IMHO) kannst du nur komplette Spalten in der Breite verändern. Mehrere Blätter ist dann aber kein Problem.

Gunnar

0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)
Hallo Gunnar, schreib mir bitte ein code dafür. Die Spalte E, G, O und die Zeile 2 sind schreibgeschützt. Danke
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Jelena,

    Dim wksTab As Worksheet
    For Each wksTab In Worksheets
        wksTab.Unprotect
        wks.colums("Q:S").EntireColumn.AutoFit
        wksTab.Protect
    Next wksTab

Falls deine Tabellen mit einem Passwort geschützt sind dann musst du dies entsprechend ergänzen - nach diesem Prinzip:

        wksTab.Unprotect "DeinPasswort"

und

        wksTab.Protect "DeinPasswort"

Bis später, Karin

0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)
Hallo Karin, kann ich diesen code in "DieseArbeitsmappe" geben oder muss dieser code in jede Tabelle1, Tabelle2 usw. eingetragen werden. Danke
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
Hi Jelena,

der Code muss in ein eigenes Makro in einem Standardmudul. Er wird also nicht automatisch ausgeführt sondern muss über einen CommandButton im Tabellenblatt oder eine Tastenkombination oder direkt im VBA-Editor gestartet werden.

Bis später, Karin
0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)

Hallo Karin, wäre es möglich dass der code automatisch ausgeführt wird, z.B. 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ThisWorkbook.Names.Add "AktiveZelle", Target(1) 'aktive Zeile Farbe
Dim wksTab As Worksheet
    For Each wksTab In Worksheets
        wksTab.Unprotect ("pw")
        wks.colums("Q:S").EntireColumn.AutoFit
        wksTab.Protect ("pw")
    Next wksTab
End Sub

oder gibt es eine bessere möglichkeit denn die Breite soll nach Eingabe breiter werden und nach dem entfernen der Daten wieder zurück. Danke

0 Punkte
Beantwortet von xlking Experte (1.6k Punkte)
Bearbeitet von xlking

Hi Jelena, dann wohl eher so:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  If Not Intersect(Target, Sh.Range("Q:S")) Is Nothing Then
    Sh.Unprotect "PW"
    If Target.Cells(1) <> "" Then Target.EntireColumn.AutoFit Else Target.EntireColumn.ColumnWidth = Sh.Columns(Sh.Columns.Count).ColumnWidth
    Sh.Protect "PW"
  End If
End Sub

Der Code gehört in das Modul "DieseArbeitsmappe" und funktioniert mir allen Tabellen gleichermaßen.

PS: Bitte stelle deine Fragen künftig so, dass schon am Anfang klar ist, was du willst, sonst machen sich die Helfer unnötige Arbeit mit Codes die du gar nicht brauchst.

Gruß Mr. K.

0 Punkte
Beantwortet von jelena Mitglied (750 Punkte)
Hallo Mr. K. Entschuldigung werde es versuchen bin leider nicht so gut beim Erklären. Es ist jedenfalls, was ich meinte. Vielen Dank
...