[[20180613074822]] 『「識別子が長すぎます。」エラー改善方法』(のりゴリ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『「識別子が長すぎます。」エラー改善方法』(のりゴリ)

はじめまして。
マクロ・ユーザーフォームのコード入力において、
コンパイルエラー「識別子が長すぎます。」とのエラーが出てしまいました。
調べると256文字以上だとエラーになってしまうと記載がありましたが、下記のコード(Mylist )
は年々増えていくコードになっております。
下記のコードを短くまとめる事が出来るのでしょうか。
ご教授よろしくお願い致します。

Private Sub UserForm_Initialize()

 Dim myList
 myList = [{"H28年度","2016S";"H27年度","2015S";"H25年度","2013S";"H24年度","2012S";"H23年度","2011S";"H22年度","2010S";"H21年度","2009S";"H20年度","2008S";"H19年度","2007S";"H18年度","2006S";"H17年度","2005S";"H16年度","2004S";"H15年度","2003S";"H14年度","2002S";"H13年度","2001S"}]
 With ComboBox1
     .List = myList
     .ColumnCount = 2
     .TextColumn = 2
 End With
 End Sub

 Private Sub CommandButton1_Click()
 With ComboBox1
     If .ListIndex > -1 Then Sheets(.Text).Select
     Unload Me
 End With

< 使用 Excel:Excel2013、使用 OS:Windows7 >


シートから読み込ませては?
(γ) 2018/06/13(水) 08:29

されたいことがピンときてないですが、↓みたいに、単純にシート名を片っ端からコンボボックスのリストに追加するんじゃダメなんですか?

    Private Sub UserForm_Initialize()
        Dim ws As Worksheet

        For Each ws In Worksheets
            ComboBox1.AddItem ws.Name
        Next ws
    End Sub

(もこな2) 2018/06/13(水) 12:43


 こんな感じにするとか?

 Private Sub UserForm_Initialize()
     Dim i As Long, myList, sYear As Long, eYear As Long
     sYear = 1995
     eYear = Year(Date) - 2
     ReDim myList(1 To eYear - sYear + 1, 1 To 2)
     For i = eYear To sYear Step -1
         myList(i - sYear + 1, 1) = Format(CDate(i & "/1/1"), "ge年度")
         myList(i - sYear + 1, 2) = i & "S"
     Next
     With ComboBox1
         .List = myList
         .ColumnCount = 2
         .TextColumn = 2
     End With
 End Sub
(seiya) 2018/06/13(水) 14:03

もこな2さん、seiyaさん、アドバイスありがとうございました。
希望通り修正し、正常動作確認出来ました。
(のりゴリ) 2018/06/13(水) 19:13

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.