VBA for ExcelでFormat()関数を使用する際に問題があります。私は問題が何であるかを少なくとも考えていません。私は以前の場所のトンでFormat()関数を使用しましたが、このような問題はありませんでした。VBAのFormat()関数が日付の書式設定が正しくない
コンテキストについては、状況を簡単に説明します。私はワークシートをたくさん持っていますが、すべて「mmm-yy」形式で月と年の組み合わせが付けられています(「メインシート」シートを除く)。下の関数(関連性のために簡略化されています)では、私の目的は各シートを循環させ、その名前を "yyyy"形式で表示することです。ご覧のとおり、7行目では、Format()関数を使用してワークシート名を「yyyy」形式に変換しています。
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
もう少し背景:私の最初の5枚は、2016年の最初の5ヶ月間(5月 - 16、4月-16、月 - 16 ...)と、残りの12は、(2015年の12ヶ月間されています12月15日、11月15日...)。
もちろん、この機能を実行すると、メッセージボックスの出力は「2016」、「2016」、「2016」、「2016」、「2016」(5か月間2016)、次に12倍の「2015」となります。右?
奇妙なことに、1720個のメッセージボックスがすべて「2016」と表示されます。
何らかの理由で、7行目のFormat()関数が2015年を2016年として読み込んでいるようです。
私の人生にとって、ここで何が起こっているのか理解できません。誰か助けてください?
ありがとうございます!
それは '15'とを解釈し、' 16'年として2016年までの日とデフォルトとして。あなたの特定の書式 '20"&Right(WS.Name、2) 'が動作するでしょう。 – arcadeprecinct