さて表題は、リファクタリング依頼時にあった事実です。
わたしは内製プログラマなので、これが当たり前の方法であるとか、そういうこだわりはないのだけど、さすがにこれはぶっ飛んでるなぁ
(誉め言葉)と思うものは結構悩むことがあります。
Public Sub test()ActiveSheet.Cells(1) = "ここです!"StopActiveSheet.Cells(2) = "ここです!"StopActiveSheet.Cells(3) = "ここです!"End Sub
さて表題、IsNumeric とは 評価対象が数値として扱えるかを判定する関数だけど変な勘違いをして扱うと、思わぬ動作を呼び込むはめになるので注意が必要な事は知っていますか
Public Sub test()Dim ロング As Long, バリアント As Variant Debug.Print ロング Debug.Print IsNumeric(ロング)Stop Debug.Print バリアント Debug.Print IsEmpty(バリアント) Debug.Pr
コレクション変数のトラブル?
普段はコレクション変数はそんなに使わないので、備忘として。
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
さて表題 Select Case という分岐は実に扱いやすく、非プログラマーからしても視覚的に理解しやすいので、運用後に分岐条件が増えるなら(可能性)この形式も悪くないと思っています。
Private Sub TEST1()'ShortCircuitEvaluationConst Value3 As Long = 7 Select Case Value3 Case Is < 9, Is < 4 Debug.Print "9より小さい 4より小さい" Case Is
さてお題ですが、一瞬悩んだけど0と比較して判定している…けど
独学なのでメジャーな方法や一般的な手法があるのかな?
Public Sub TEST()Const Numeric As Long = -20 If Numeric = 0 Then Debug.Print "0です" ElseIf Numeric > 0 Then Debug.Print "符号は+です" ElseIf Numeric < 0 Then Debug.Print "符号は-です" End I
表題ですがみなさんはどう処理してるのだろうか?
自分は10分程考えた結果以下になった
Public Sub test()Const Numeric_A As Currency = 132.55Const Numeric_B As Currency = 251 If Numeric_B <> Fix(Numeric_B) Then MsgBox "整数値ではありません" Else MsgBox "整数値ですね" End IfEnd Sub
まぁ情報を処理する上で、データ
表題ですが自分が Excel を使う時に嫌な罠があります
VBAで1回は苦労するであろう、問題 以下サンプル
(動かないよ?見本だから)
Public Sub サンプル()Dim SH1 As Worksheet, SH2 As Worksheet, LC As LongConst B列 As Long = 2 For LC = 1 To 50 Step 1 Worksheets("テンプレ").Copy Set SH2 = ActiveSheet SH1.AutoF