1.異なるデータ型の変数をひとまとめに出来る
2.配列化も可能
3.引数として渡す場合 リードオンリーにすることが簡単
Public Type pInfo name As String age As Integer job As StringEnd Type
Option Explicit の直下が一般的だけど、プロシージャ内も可能
Private か Publicの使用でスコープの変更も可
APIを使えば一気に初期化出来るらしい
というのは、初期化する場面が無いので方
早速だけど、以下を見て欲しい。
Public Function SetSheet() As Boolean 'ByRef ObjName As StringDim SH As Worksheet On Error Resume Next Set SH = ThisWorkbook.Worksheets("無いワークシート") SetSheet = TrueNothin:SetSheet = FalseEnd Function
コードそのものは、シンプルかつ利便性が高いけど
さて表題は、リファクタリング依頼時にあった事実です。
わたしは内製プログラマなので、これが当たり前の方法であるとか、そういうこだわりはないのだけど、さすがにこれはぶっ飛んでるなぁ
(誉め言葉)と思うものは結構悩むことがあります。
Public Sub test()ActiveSheet.Cells(1) = "ここです!"StopActiveSheet.Cells(2) = "ここです!"StopActiveSheet.Cells(3) = "ここです!"End Sub
普段はコレクション変数はそんなに使わないので、備忘として。
Private Sub コレクション変数テスト()
Dim LoopCount As Long, Word As Collection
Const MaxCount As Long = 300
Set Word = New Collection
For LoopCount = 1 To MaxCount Step 1
Word.Add LoopCount
Next LoopCount
Stop
End
ずいぶん前から良くわからないなぁと思う事が表記の事です
Public Sub コレクション関数() Dim Word1 As New Collection Dim Word2 As Collection Set Word2 = New CollectionEnd Sub
自分は set Word2 =New Collection が普通だな~と思って使っていたけど、ネットのコード眺めるとたまに Dim Word1 As New Collection な人がいて
ぼっち
何のことだ? as Variant で = すればいいのでは?と思ったあなたは、できればこの苦労はしない方が良い。
あぁわかる、苦労するよねと思ったあなた、結構な使い手ですね。
Private Sub StaticToDynamic()Dim StaticArray(1 To 3) As Long, DynamicArray() As Long, LC As Long StaticArray(1) = 5 StaticArray(2) = 7 StaticArray(3)
コレ以外とやらないことなので、トラブルと厳しい…、外部ライブラリに文字列を送るときに、As String じゃなくて As Variant を要求される事がある
Public Sub test()Dim Word As Variant Word = "文字列1" Stop Word = Array("文字列2") StopEnd Sub
実は As Variant 形式で単純に文字列送ってもエラーで頭抱えたのであるが、
結果は配列にして文字列を送るとOKという事があった
さて表題は、固定概念があると良くないよという実例を一つ
Public Sub TEST()Dim AddCount As Collection, CountAdd As LongSet AddCount = New Collection For CountAdd = 1 To 10 AddCount.Add IIf(CountAdd Mod 2 = 0, "偶数値", "奇数値") Next CountAddEnd Sub
IIF関数のサンプルって "=" を繋げたもの
あまりこの使い方はしないけど備忘のため記録
Private Sub TEST2()'ShortCircuitEvaluationConst Value3 As String = "あさくら"Select Case True Case Value3 Like "あさ*ら" MsgBox Value3 Case Else EndEnd SelectEnd Sub
True で Select Case を通しているので、分岐の役割として違和感を感じるけど…、単純に like