• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAのCollectionについて)

VBAのCollectionについて

このQ&Aのポイント
  • VBAのCollectionを使用してアイテムを追加する際に、最新のアイテムを小さい添え字で取得するための方法についての質問です。
  • 現在はアイテムを追加する際に、アイテム数が0の場合とそれ以外の場合で異なる表記をしていますが、よりスマートな方法はないか検討しています。
  • 質問者は、アイテムの追加部分が増えてくるにつれて表記が複雑になることに困っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

標準モジュールに以下のようなコードを記述すれば、呼び出し元では  「CollectionAddFoward "あ", abc」とか  「Call CollectionAddFoward("あ", abc)」 の1行で、ご希望の動作をさせることができるかと思います。 (Subの名前は適当につけただけなので、必要に応じて変更して下さい) Public Sub CollectionAddFoward(Obj As Variant, Col As Collection) On Error GoTo エラー処理   Col.Add Obj, Before:=1 終了処理:   Exit Sub エラー処理:   Select Case Err     Case 5     'アイテム不在によるエラー時       Col.Add Obj     Case Else   '上記以外のエラー時はエラーメッセージを表示       MsgBox Err & ":" & Error$, , "CollectionAddFoward"   End Select   Resume 終了処理 End Sub ・・・以上です。 もちろん、ご質問文のようなIf文で対応してもOkです。 Public Sub CollectionAddFoward(Obj As Variant, Col As Collection)   If Col.Count Then   'アイテム存在時(0以外はTrueと判定されます)     Col.Add Obj, Before:=1   Else            'アイテム不在時     Col.Add Obj   End If End Sub

brave33
質問者

お礼

お二人共に回答ありがとうございました。 とても参考になりました。

その他の回答 (1)

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.1

>アイテムの追加部分が増えてくるにつれて、この表記はあまりにつらくなってきました。 アイテムの追加部分が増えても "あ" の部分を変数で扱えば上記の5行で済むと思いますが それとも If abc.Count = 0 Then abc.Add "あ" Else abc.Add "あ", Before:=1 かな?

関連するQ&A

専門家に質問してみよう