記事一覧
As Variant で文字列を送る
コレ以外とやらないことなので、トラブルと厳しい…、外部ライブラリに文字列を送るときに、As String じゃなくて As Variant を要求される事がある
Public Sub test()Dim Word As Variant Word = "文字列1" Stop Word = Array("文字列2") StopEnd Sub
実は As Variant 形式で単純に文字列送っても
Select Case で Like を使う
あまりこの使い方はしないけど備忘のため記録
Private Sub TEST2()'ShortCircuitEvaluationConst Value3 As String = "あさくら"Select Case True Case Value3 Like "あさ*ら" MsgBox Value3 Case Else EndEnd SelectEnd Sub
True で Select C
Select Case の怖さ
さて表題 Select Case という分岐は実に扱いやすく、非プログラマーからしても視覚的に理解しやすいので、運用後に分岐条件が増えるなら(可能性)この形式も悪くないと思っています。
Private Sub TEST1()'ShortCircuitEvaluationConst Value3 As Long = 7 Select Case Value3 Case Is < 9, Is < 4
整数値がプラスかマイナスかの判定
さてお題ですが、一瞬悩んだけど0と比較して判定している…けど
独学なのでメジャーな方法や一般的な手法があるのかな?
Public Sub TEST()Const Numeric As Long = -20 If Numeric = 0 Then Debug.Print "0です" ElseIf Numeric > 0 Then Debug.Print "符号は+です" ElseIf Nume
ランダムで入ってくる整数と小数を仕分ける
表題ですがみなさんはどう処理してるのだろうか?
自分は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
Excelのコピーペーストの罠
表題ですが自分が 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("テンプレ"
Local を考慮したSaveって何?
さて表題、考慮しないとどうなるか?から説明します
主にCSVやテキストなど、Local 情報がないデータをVBAで
雑に保存すると発生しがちな現象である
わかりやすく言えば "yyyy/mm/dd" が "mm/dd/yyyy"として保存されるなどで、発生頻度が少なく 対策は簡単だけど初心者やWin-Actr などには
迷惑な結果が起きる 、理由が分からないと \(^o^)/オワタになりがち
NumberFormat と NumberFormatLocal
これは特別に意識しなくても良いみたいですね
オブジェクトの表示形式を表すバリアント型 (Variant) の値を取得または設定します。
指定されたオブジェクトの表示形式をコード実行時の言語の文字列で表すバリアント型 (Variant) の値を取得、または設定します。
リファレンス見てもそう違いはないかな?
Sub TEST()With ActiveSheet.Cells(1, 1)Stop.
FormulaLocalかValue どっちが正解?
さてお題、初期の頃、違いが判らず悩んだけど。
全部正解です。一応注意点はあるよ?
Sub TEST() With ActiveSheet.Cells(1, 1) Stop .FormulaR1C1 = "桜" Stop .FormulaLocal = "さくら" Stop .Value = "サクラ" Stop .Value2 = "Sakura" End WithEnd Sub
極端
キャンセルは3回まで
さて表題、わかりずらいかな?
ファイルをダイアログで指定するのだけど、キャンセルを制限するという事そうしないと処理が延々と繰り返されるので…
Public Sub TEST()Call TEST2MsgBox "次の処理へ"End Sub
Private Sub TEST2(Optional ByRef CancelCount As Long = 0) If CancelCount >= 3
整数と小数点を分ける@2回目
前のお題で誤解があるかもしれないなぁと思い
基本的にはこっちだよという サンプルを供出します
Public Sub TEST()Dim SplitTime As Date, SplitDate As DateConst DateTime As Date = 45384.7721444444 SplitDate = Format(DateTime, "yyyy/mm/dd") Debug.Prin
Win Actorの小技
さて表題、Win Actorの件です
ノードやライブラリで処理出来る事をわざわざExcelファイルにする
理由について
1. 24時間常駐型シナリオであり、シナリオがループしているかの確認を
Excelブックの新規作成時間で、他のPCから状態確認できるから
@毎回削除→新規作成を繰り返す
2. ノードやライブラリで処理が 劇的に面倒 か とても遅い
3.途中の出力が必要だ @要望で
1
WorksheetFunction関数?
さて、表題ですが私は時々使いますね、そこまでの頻度ではありませんが
Excelバージョンの差異に注意しないといけないし。
Public Sub test()Dim Variable As Variant, ModeVariable As Long, ModeCount As VariantVariable = Array(1, 3, 5, 7, 1) ModeVariable = Worksh
整数と小数点に分解する その危うさ
さてお題 変数の特性を理解しないとこーなると言う やらかしを例に
上記を分解する場合 45384.7721444444 をExcelの日付と時間があるタイプ
私の場合は無意識に As Double 指定したけど…。
Public Sub TEST()Dim SingleTime As Single, DoubleTime As Double, CurrencyTime As CurrencyC
ByRef と ByVal ?
リファクタリングで凄いの見たので、お題として残しておく
ByRef が基本 Byval は一部のみってのは独学の私でも理解しているけど
Public Sub TEST()Dim Subject As String, Body As StringSubject = "さぶじぇくと" Body = "ぼでー"Call TEST_Ref(Subject, Body) Debug.Print Subje