Formatierungshilfe durch VBA
#1
Nochmals vielen Dank für die Lösung meines letzten Problems. Und weil das so schön geklappt hat, würde ich gerne wieder estwas neues lernen in VBA, und mir die Formatierung meiner Excelsheets zu vereinfachen.

Ich habe bei der Erstellung meiner Auswertung anscheinend ein bisschen geschludert, was mir jetzt wieder mal auf die Füße fällt.

In der Frage von gestern, musste nach einer Wortphrase gesucht werden, und die Formel rechts daneben geändert werden.

Nun mein neues Problem:
In einer Spalte L (in einer Arbeitsmappe) soll nach 3 Phrasen gesucht werden, und die Formeln und Zahlen inklusive Formatierung jeweils rechts davon um eine Spalte weiter nach rechts verschoben werden. Also von Spalte N (sofern nicht leer) zu Spalte O (wenn leer).

Klingt einfach, setzt halt aber wieder ein gewisses VBA-Grundwissen vorraus.

Ich habe mal den Code ein bisschen verändert, aber komme nicht weiter.


.xlsm   test.xlsm (Größe: 38 KB / Downloads: 2)

Code:
Sub Formelnverschieben()
  Dim oWs As Worksheet
  Dim rngZelle As Range
  Dim strBezug(1 To 2) As String
  On Error Resume Next
  
  For Each oWs In ActiveWorkbook.Worksheets
    For Each rngZelle In oWs.Columns(14).SpecialCells(xlCellTypeFormulas) <-- nicht nur Formeln!!!
      If rngZelle.Offset(, -2).Value = "Werktage:" Or "Werktagenetto :" Or "? (WT, WTnetto ):" or "Summe:" Then
        

        hier copy, Spalte+1, paste
        
        
      End If
    Next rngZelle
  Next oWs


End Sub
Top
#2
Hallo Schu,

Code:
Sub Formelnverschieben()
  Dim oWs As Worksheet
  Dim rngZelle As Range
  On Error Resume Next
  For Each oWs In ActiveWorkbook.Worksheets
    For Each rngZelle In oWs.Columns(12).SpecialCells(xlCellTypeConstants)  'Spalte L durchsuchen
      Select Case rngZelle.Value
        Case "Werktage:", "Werktagenetto :", "? (WT, WTnetto ):", "Summe:"
          If Not IsEmpty(rngZelle.Offset(, 2)) Then
            If IsEmpty(rngZelle.Offset(, 3)) Then
              rngZelle.Offset(, 2).Cut rngZelle.Offset(, 3)
            End If
          End If
      End Select
    Next rngZelle
  Next oWs
End Sub

Gruß Uwe
Top
#3
(06.05.2014, 12:59)Schu schrieb: Nun mein neues Problem:
In einer Spalte L (in einer Arbeitsmappe) soll nach 3 Phrasen gesucht werden, und die Formeln und Zahlen inklusive Formatierung jeweils rechts davon um eine Spalte weiter nach rechts verschoben werden. Also von Spalte N (sofern nicht leer) zu Spalte O (wenn leer).

und was ist, wenn N und O nicht leer sind?
Top
#4
Erstmal wieder ein Dank an Uwe, dein Ergebnis gucke ich mir gleich an. Habe hier nochmal ein Update von meiner Lösung.

Code:
Sub Formelnverschieben()
  Dim oWs As Worksheet
  Dim rngZelle As Range
  Dim strBezug(1 To 2) As String
  On Error Resume Next
  
  For Each oWs In ActiveWorkbook.Worksheets
    For Each rngZelle In oWs.Columns(14).SpecialCells(xlCellTypeFormulas)
      If rngZelle.Offset(, -2).Value = "Werktage:" Or "Werktagenetto :" Or "? (WT, WTnetto ):" Or "Summe:" Then
        If rngZelle.Offset(, 0).Value <> "" And rngZelle.Offset(, 1) = "" Then
            rngZelle.Offset(, 0).Value.Select
            Selection.Copy
            rngZelle.Offset(0, 1).Value.Select
            rngZelle.Paste
            Application.CutCopyMode = False
        End If
        
        
      End If
    Next rngZelle
  Next oWs


End Sub

Es wird kein Fehler angezeigt, aber es passiert auch nichts.

@ Ralf: Wenn N und O nicht leer sind, dann end if und nächste Zeile.
Top
#5
Hallo Schu,

habe meinen 1. Beitrag gerade editiert: http://www.clever-excel-forum.de/showthread.php?tid=365&pid=2307#pid2307

Gruß Uwe
Top
#6
Danke für dein schnelles Update Uwe! Ein fehler ist noch drin. Ich habe in einer Suchzeile ein "Delta" drin. Wurde beim kopieren als "? (WT, WTnetto ):" erkannt. gibt es eine Möglichkeit, dass auch diese Formeln hinter diesem Text verschoben werden?
Top
#7
Hallo Schu,

du darfst in der Case-Zeile die gewünschten Texte auch selber eintragen/ändern. Wink

Gruß Uwe
Top
#8
Ich würde euch ja damit nicht nerven, wenn ich es hinkriegen würde! Angel

Wenn ich das "Delta" = Δ in den VBA - Code einfüge, kommt wieder ein "?". Das muss doch bestimmt irgendwie umgeändert werden?
Das einzige was ich gefunden habe war: ChrW(916) oder Δ
Beides funktioniert leider nicht.
Top
#9
Habs. Ich hatte

"ChrW(916) (WT, WTnetto ):" aber es wird wohl eine Funktion oder so sein.

ChrW(916) & " (WT, WTnetto ):" <-- so funktioniert es.

Vielen Dank nochmal für die schnelle Hilfe! Wieder etwas dazu gelernt.
Top
#10
Hallo Schu,

markiere eine Zelle mit diesem Zeichen und führe dieses Makro aus:
Code:
Sub ZeichenCodeAbfrage()
  Debug.Print AscW(ActiveCell.Value)
End Sub

Im Direktfenster (wenn nicht sichtbar, mit strg+g anzeigen) wird der Zeichencode angezeigt.

Nun kannst Du in der Case-Zeile diesen Code dann so anwenden:
Code:
Case "Werktage:", "Werktagenetto :", ChrW(916) & " (WT, WTnetto ):", "Summe:"

Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste