Hallo Suppik,
prinzipiell sollte das unabhängig vom eingesetzten Officeprodukt so funktionieren:
Option Explicit
Sub test()
Debug.Print TransposeChord("A", 3)
End Sub
Private Function TransposeChord(InputChord As String, HalfStep As Long) As String
Static chords As Collection
Dim i As Long
Dim chordArr As Variant
Dim isMinor As Boolean
If LCase(InputChord) = InputChord Then isMinor = True
chordArr = Split("C,C#,D,D#,E,F,F#,G,G#,A,A#,H", ",")
If chords Is Nothing Then
Set chords = New Collection
For i = LBound(chordArr) To UBound(chordArr)
chords.Add i, UCase(chordArr(i))
Next i
End If
TransposeChord = chordArr((chords.Item(UCase(InputChord)) + HalfStep) Mod 12)
If isMinor Then TransposeChord = LCase(TransposeChord)
End Function
Die beschriebene Vorgehensweise transponiert eine Akkordeingabe um die angegebene Anzahl an halbtonschritten. Moll-Akkorde werden dabei anhand der Kleinschreibung erkannt. Beachte, dass keine verminderten, vermehrten oder septimenakkorde umgesetzt werden.
Zusätzlich müsstest du dir natürlich noch eine Logik überlegen, wie du Akkorde im Worddokument erkennst und von den normalen Textzeilen trennst.
Viele Grüße
derHöpp
|