Not-おっとりさん

1971年生まれ-男-某保険代理店で内製プログラマーを他担当 Excel_Access…

Not-おっとりさん

1971年生まれ-男-某保険代理店で内製プログラマーを他担当 Excel_Access のVba及び関数・SQL Win-Acto rのシナリオを0から作成・改良 Vbs が補助 ちなみに独学者でもあります 色々な経験を経て、蓄積した地味な事を記憶したいため ブログを立ち上げる

最近の記事

As Variant で文字列を送る

コレ以外とやらないことなので、トラブルと厳しい…、外部ライブラリに文字列を送るときに、As String じゃなくて As Variant を要求される事がある  Public Sub test()Dim Word As Variant Word = "文字列1" Stop Word = Array("文字列2") StopEnd Sub 実は As Variant 形式で単純に文字列送ってもエラーで頭抱えたのであるが、 結果は配列にして文字列を送るとOKという事があった

    • iif関数について

      さて表題は、固定概念があると良くないよという実例を一つ 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関数のサンプルって "=" を繋げたもの

      • 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 Case を通しているので、分岐の役割として違和感を感じるけど…、単純に like

        • Select Case の怖さ

          さて表題 Select Case という分岐は実に扱いやすく、非プログラマーからしても視覚的に理解しやすいので、運用後に分岐条件が増えるなら(可能性)この形式も悪くないと思っています。 Private Sub TEST1()'ShortCircuitEvaluationConst Value3 As Long = 7 Select Case Value3  Case Is < 9, Is < 4   Debug.Print "9より小さい 4より小さい"  Case Is

        As Variant で文字列を送る

          整数値がプラスかマイナスかの判定

          さてお題ですが、一瞬悩んだけど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のコピーペーストの罠

          表題ですが自分が 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

          Excelのコピーペーストの罠

          Local を考慮したSaveって何?

          さて表題、考慮しないとどうなるか?から説明します 主にCSVやテキストなど、Local 情報がないデータをVBAで 雑に保存すると発生しがちな現象である わかりやすく言えば "yyyy/mm/dd" が "mm/dd/yyyy"として保存されるなどで、発生頻度が少なく 対策は簡単だけど初心者やWin-Actr などには 迷惑な結果が起きる 、理由が分からないと \(^o^)/オワタになりがち Public Sub test1()Dim MePath As StringMe

          Local を考慮したSaveって何?

          NumberFormat と NumberFormatLocal

          これは特別に意識しなくても良いみたいですね オブジェクトの表示形式を表すバリアント型 (Variant) の値を取得または設定します。 指定されたオブジェクトの表示形式をコード実行時の言語の文字列で表すバリアント型 (Variant) の値を取得、または設定します。 リファレンス見てもそう違いはないかな? Sub TEST()With ActiveSheet.Cells(1, 1)Stop.NumberFormat = "General"Stop.NumberForma

          NumberFormat と NumberFormatLocal

          FormulaLocalかValue どっちが正解?

          さてお題、初期の頃、違いが判らず悩んだけど。 全部正解です。一応注意点はあるよ? Sub TEST() With ActiveSheet.Cells(1, 1) Stop .FormulaR1C1 = "桜" Stop .FormulaLocal = "さくら" Stop .Value = "サクラ" Stop .Value2 = "Sakura" End WithEnd Sub 極端な事言うならば Local が付くのを使うのが一番安全ではあります Win Ac

          FormulaLocalかValue どっちが正解?

          キャンセルは3回まで

          さて表題、わかりずらいかな? ファイルをダイアログで指定するのだけど、キャンセルを制限するという事そうしないと処理が延々と繰り返されるので… Public Sub TEST()Call TEST2MsgBox "次の処理へ"End Sub Private Sub TEST2(Optional ByRef CancelCount As Long = 0) If CancelCount >= 3 Then MsgBox "キャンセル制限により停止" End End If

          キャンセルは3回まで

          整数と小数点を分ける@2回目

          前のお題で誤解があるかもしれないなぁと思い 基本的にはこっちだよという サンプルを供出します Public Sub TEST()Dim SplitTime As Date, SplitDate As DateConst DateTime As Date = 45384.7721444444 SplitDate = Format(DateTime, "yyyy/mm/dd") Debug.Print SplitDateStop SplitTime = Format(DateT

          整数と小数点を分ける@2回目

          Win Actorの小技

          さて表題、Win Actorの件です ノードやライブラリで処理出来る事をわざわざExcelファイルにする 理由について 1. 24時間常駐型シナリオであり、シナリオがループしているかの確認を  Excelブックの新規作成時間で、他のPCから状態確認できるから  @毎回削除→新規作成を繰り返す 2. ノードやライブラリで処理が 劇的に面倒 か とても遅い 3.途中の出力が必要だ @要望で 1は割とお勧め、いちいち該当PCを遠隔で視覚的に見なくてすむ 適切な間隔で新規ファ

          WorksheetFunction関数?

          さて、表題ですが私は時々使いますね、そこまでの頻度ではありませんが Excelバージョンの差異に注意しないといけないし。 Public Sub test()Dim Variable As Variant, ModeVariable As Long, ModeCount As VariantVariable = Array(1, 3, 5, 7, 1) ModeVariable = WorksheetFunction.Mode(Variable) Debug.Print

          WorksheetFunction関数?

          整数と小数点に分解する その危うさ

          さてお題 変数の特性を理解しないとこーなると言う やらかしを例に 上記を分解する場合 45384.7721444444 をExcelの日付と時間があるタイプ 私の場合は無意識に As Double 指定したけど…。 Public Sub TEST()Dim SingleTime As Single, DoubleTime As Double, CurrencyTime As CurrencyConst DateTime As Double = 45384.77214444

          整数と小数点に分解する その危うさ

          ByRef と ByVal ?

          リファクタリングで凄いの見たので、お題として残しておく ByRef が基本 Byval は一部のみってのは独学の私でも理解しているけど Public Sub TEST()Dim Subject As String, Body As StringSubject = "さぶじぇくと" Body = "ぼでー"Call TEST_Ref(Subject, Body) Debug.Print Subject, Body Stop Call TEST_Val(Subject, B