Microsoft Excel

Herbers Excel/VBA-Archiv

Rahmen per VBA


Betrifft: Rahmen per VBA von: MaBlu
Geschrieben am: 28.01.2019 11:49:17

Hallo

Ich möchte einen Rahmen automatisch erzeugen, wenn etwas in Zelle B? steht
Dann soll es mir einen dicken Rahmen um die Zellen A bis G machen.
Gibt es da ein Makro das das selbständig erledint!
Wenn der Inhalt in B? gelöscht wird soll wieder der Standard sein.

Besten Dank für die Rückmeldung

Gruss MaBlu

  

Betrifft: AW: Rahmen per VBA von: Luschi
Geschrieben am: 28.01.2019 12:28:11

Hallo MaBlu,

Dein Informationsgehalt, wodurch etwas im Tabellenblatt passiert, wird immer spärlicher:
- durch manuelle Eingabe per Tastatur/Maus
- Formel in der Zelle
- durch 1 Abfrage (Query)
- oder durch etwas Anderes

Und für jeden Fall gibt es unterschiedliche Herangehenweisen.

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: Rahmen per VBA von: MaBlu
Geschrieben am: 28.01.2019 18:17:51

Hallo Luschi

ja ich dachte dass das klar ist sobald einfach ein Wert reinkommt solls Funktionieren, aber du hast recht, werde mich bemühen es genauer zu Umschreiben sorry.
Das Problem konnte ich aber dank Rudis Makro lösen.
Dir vielen Dank für die Info

Gruss MaBlu


  

Betrifft: AW: Rahmen per VBA von: Rudi Maintaire
Geschrieben am: 28.01.2019 12:34:22

Hallo,
bei Eintrag von Hand:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 Then
    If Target.Count = 1 Then
      If Target <> "" Then
        Target.Offset(, -1).Resize(, 7).BorderAround xlContinuous, xlMedium
      Else
        With Target.Offset(, -1).Resize(, 7)
          .Borders(xlDiagonalDown).LineStyle = xlNone
          .Borders(xlEdgeLeft).LineStyle = xlNone
          .Borders(xlEdgeTop).LineStyle = xlNone
          .Borders(xlEdgeBottom).LineStyle = xlNone
          .Borders(xlEdgeRight).LineStyle = xlNone
      End With
      End If
    End If
  End If
End Sub

Gruß
Rudi


  

Betrifft: AW: Rahmen per VBA von: MaBlu
Geschrieben am: 28.01.2019 13:18:22

Hallo Rudi

zum Eintragen geht es wunderbar, wenn ich aber die Eingabe in der Zelle wieder lösche bleibt das Makro stehen bei
.Borders(xlDiagonalDown).LineStyle = xlNone

wahrscheinlich weil die obere Zeile einen Rahmen hat ??

Kann man hier noch was schrauben?

Gruss Mablu


  

Betrifft: AW: Rahmen per VBA von: Rudi Maintaire
Geschrieben am: 28.01.2019 16:50:17

Hallo,
das Ergebnis beim löschen war ohnehin Mist.
Versuch mal das:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column = 2 Then
    If Target.Count = 1 Then
      With Target.Offset(, -1).Resize(, 7)
        If Target <> "" Then
          .BorderAround xlContinuous, xlMedium
        Else
          .Borders(xlEdgeLeft).LineStyle = xlNone
          .Borders(xlEdgeRight).LineStyle = xlNone
          If Target.Row > 1 Then
            If Target.Offset(-1) = "" Then .Borders(xlEdgeTop).LineStyle = xlNone
          End If
          If Target.Offset(1) = "" Then .Borders(xlEdgeBottom).LineStyle = xlNone
        End If
      End With
    End If
  End If
End Sub
Gruß
Rudi


  

Betrifft: AW: Rahmen per VBA von: MaBlu
Geschrieben am: 28.01.2019 18:05:52

Hallo Rudi

Der Rahmen lässt sich problemlos einfügen doch wenn ich die Zelle wieder lösche bleibt es immer noch hängen bei:
Else
.Borders(xlEdgeLeft).LineStyle = xlNone

Gruss MaBlu


  

Betrifft: AW: es geht danke! von: MaBlu
Geschrieben am: 28.01.2019 18:13:35

Hallo Rudi

ich war zu schnell, dein Macro macht hervorragende Arbeit, es war mein Blattschutz der jedesmal dazwischen funkte und das löschen verhinderte, ich habe jetzt das Blatt am Anfang entschützt und am ende wieder geschützt. dann gehts.

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="asd"
  If Target.Column = 2 Then
    If Target.Count = 1 Then
      With Target.Offset(, -1).Resize(, 7)
        If Target <> "" Then
          .BorderAround xlContinuous, xlMedium
        Else
          .Borders(xlEdgeLeft).LineStyle = xlNone
          .Borders(xlEdgeRight).LineStyle = xlNone
          If Target.Row > 1 Then
            If Target.Offset(-1) = "" Then .Borders(xlEdgeTop).LineStyle = xlNone
          End If
          If Target.Offset(1) = "" Then .Borders(xlEdgeBottom).LineStyle = xlNone
        End If
      End With
    End If
    ActiveSheet.Protect Password:="asd", DrawingObjects:=False, Contents:=True, Scenarios:= _
        False, AllowSorting:=True, AllowFiltering:=True
    ActiveSheet.EnableSelection = xlUnlockedCells
  End If
End Sub

Vieln Dank für deine grosse Hilfe

Gruss MaBlu


  

Betrifft: wieso VBA? Bedingte Formatierung! (owT) von: EtoPHG
Geschrieben am: 28.01.2019 12:40:59




  

Betrifft: AW: wieso VBA? Bedingte Formatierung! (owT) von: MaBlu
Geschrieben am: 28.01.2019 18:15:14

Hallo EtoPHG

da kann ich nur einen dünnen Rahmen auswählen, und dann wird jede Zelle unterteilt, oder ich weiss nicht wie?

Gruss MaBlu


  

Betrifft: Dann nimm Füllfarbe statt Rahmen! (owT) von: EtoPHG
Geschrieben am: 28.01.2019 21:14:00




Beiträge aus dem Excel-Forum zum Thema "Rahmen per VBA"