Hi,
bei deinem Sortieren beziehst du dich nicht auf das aktive Tabellenblatt, deshalb muss vor ALLEN Zellangaben (Range und Cells) der Blattname stehen - bei dir fehlt er vor jeweils vor Cells(2, 14)
Einfacher ist es, wenn man sich  mittels With-Anweisung auf ein bestimmtest Tabellenblatt bezieht - das macht den Code kürzer und übersichtlicher. Allerdings muss man dabei darauf achten, dass vor ALLEN Zellangaben (Range und Cells) ein Punkt (.) steht. Dies ist für Excel der Hinweis, dass sich alle Zellangaben auf das innerhalb der With-Anweisung genannte Tabellenblatt beziehen - fehlt der Punkt, dann gibt es einen Laufzeitfehler, weil Excel die Zellangabe nicht zuordnen kann. In deiner Mappe gibt es zwar keinen Laufzeitfehler, aber das hängt einfach damit zusammen, dass du das Makro sicher ausgeführt hast, wenn Tabelle1 aktiv ist, dann erkennt Excel Zellangaben zum gerade aktiven Tabellenblatt zugehörig. Wenn du das Makro mit deinen Änderungen jedoch ausführst wenn Tabelle2 aktiv ist, gibt es Ärger.
Sub Transponieren()
    Dim lngZeile As Long
    Dim intSpalte As Integer
    Dim lngZiel As Long
    lngZiel = 2
    Dim intAnzahl As Integer
    With Worksheets("Tabelle1")
        For lngZeile = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
            For intSpalte = 4 To 12 Step 2
                If Application.Count(.Range(.Cells(lngZeile, intSpalte), .Cells(lngZeile, intSpalte + 1))) > 0 Then
                    .Range(.Cells(lngZeile, 1), .Cells(lngZeile, 3)).Copy Worksheets("Tabelle2").Cells(lngZiel, 1)
                    .Range(.Cells(lngZeile, intSpalte), .Cells(lngZeile, intSpalte + 1)).Copy Worksheets("Tabelle2").Cells(lngZiel, 3)
                    lngZiel = lngZiel + 1
                End If
            Next intSpalte
        Next lngZeile
    End With
    With Worksheets("Tabelle2")
        .Range(.Cells(2, 1), .Cells(lngZiel, 5)).Sort key1:=.Cells(2, 1), order1:=xlAscending, Header:=xlNo
    End With
End Sub
Bis später, Karin