Ich habe Probleme mit der Format() -Funktion in VBA für Excel. Ich habe nicht die geringste Ahnung, was das Problem ist. Ich habe die Format() -Funktion in Tonnen von Orten zuvor verwendet und nie hat es so Probleme gegeben.Format() -Funktion in VBA formatieren Daten nicht korrekt
Für den Kontext, lassen Sie mich kurz die Situation erklären. Ich habe eine Reihe von Arbeitsblättern, die alle mit einer Monat-Jahr-Kombination im Format "mmm-yy" benannt sind (mit Ausnahme des Blattes "Hauptblatt"). In der unten stehenden Funktion (vereinfacht für Relevanz) ist es mein Ziel, jeden Bogen durchzublättern und seinen Namen im Format "JJJJ" anzuzeigen. Wie Sie sehen können, verwende ich in Zeile 7 die Funktion Format(), um den Namen des Arbeitsblatts in das Format "JJJJ" zu konvertieren.
Function populateYearsCBB()
Dim WS As Worksheet
Dim yyyyName As Integer
For Each WS In ThisWorkbook.Worksheets
If WS.name <> "Main Sheet" Then
'WS.name is therefore a month-year combo of "mmm-yy" format
yyyyName = Format(WS.name, "yyyy") 'LINE 7
MsgBox (yyyyName)
End If
Next
End Function
Ein wenig mehr Hintergrund: Meine ersten 5 Blätter werden die ersten fünf Monate 2016 (Mai-16 Apr-16, Mar-16 ...) und die restlichen 12 sind die 12 Monate von 2015 (15. Dez., 15. Nov.).
Natürlich, wenn ich diese Funktion ausführen würde, würde ich erwarten, dass die Ausgaben meiner Nachrichtenkästen lauten: "2016", "2016", "2016", "2016", "2016" (für die fünf Monate 2016), und dann 12 Mal "2015". Recht?
Seltsamerweise bekomme ich 17 Nachrichtenfelder alle sagen "2016".
Aus irgendeinem Grunde die Funktion Format() in Zeile 7 scheint die 2015 Monate als 2016 als auch das Lesen werden.
Ich kann nicht für das Leben von mir herauszufinden, was hier vor sich geht. Jemand bitte helfen?
Vielen Dank im Voraus!
Es interpretiert die '15' und' 16' als Tage und Vorgaben bis 2016 als Jahr. Für Ihr spezifisches Format würde "20" & Richtig (WS.Name, 2) 'funktionieren. – arcadeprecinct