アフィリエイト広告を利用しています

2020年07月21日

VBA RangeとCellsの範囲指定サンプル

RangeとCellsを利用した範囲指定のサンプル


B1セルの指定
  Range("B1")
  Cells(1, 2)
  Cells(1,”B”)

A1〜B3セルの範囲指定
  Range("A1:B3")
  Range("A1", "B3")
  Range(Cells(1, 1), Cells(3,2))
  Range("A1", Cells(3,2))
  Range("A1:A3", "B1")

A1とB3セルの指定
  Range("A1,B3")

1〜3行の範囲指定
  Range(Rows(1), Rows(3))
  Range("1:3")

1〜3列の範囲指定
  Range(Columns(1), Columns(3))
  Range("A:C")

全セル指定
  Range(Rows(1), Columns(1))
  Cells ※行・列を指定しない

※Cellsで取得できるセルは1つか全てであり、行や列などの複数セルは選択できない


隣接していない複数セルの範囲指定
  Union(Range("K1:K7"), Range("P1:P7")).Select

 ※隣接していない複数セルの範囲指定には Union を利用する



(注)Rangeの引数について
 Rangeの引数は2つまでしか指定できない
   Range(引数1,引数2)

 誤)
 Range("A1","B2","C1").Select
  ※コンパイルエラーが発生する

 正)
 Range("A1,B2,C1").Select



【関連記事】 Rangeの利用例

2020年06月19日

確率の収束に必要な試行回数

収束したと判断する数値を誤差何%まで許容するかで試行回数は変わってくる。


【95%の確率で信頼できる試行回数の計算式】
 
   試行回数(N) = 危険率(Z)^2 × ( 確率分母(K) – 1 ) ÷ 誤差(R)^2


 EX.確率50%(確率分母2)で誤差±10%以内に収束する為に必要となる試行回数N

  N = 1.96^2 × ( 2 – 1 ) ÷ 10%^2 = 384回


確率50%で誤差±10%以内(45%〜55%)に収束するには、95%の確率で384回以上の試行回数が必要。

以下、誤差±10%以内の試行回数
 ・確率60%で256回
 ・確率70%で165回
 ・確率80%で96回
 ・確率90%で43回

よって、試行回数が384回未満であった場合、本来の確率に収束しておらず、あてにならない数字である可能性が高い。
また、95%の確率で信頼できるとは、20回に1回は外れるかもしれないが、残りの19回は信頼できる事を示す。
※確度95%なので範囲外の結果が出る確率が5%。良い方に外れる場合と悪い方に外れる場合があるため、半分の2.5%ずつが危険率ということになる。


>危険率とは
危険率5%の場合、100回同じ検査をすれば5回は異なる結果になるかもしれない。
だが、それには目を瞑るということ。

通常の場合、この確率(危険率)は0.05 とされている。
5%は判断を間違える(事象は偶然に起こった)かも知れないという基準。
重要な判断では、判断が間違っている可能性を低く抑えるため、この基準を0.01に下げる。
では、なぜ 0.05 や 0.01 なのか。
これには特に絶対的な理由はない様子。統計学の世界で広く一般に認められている共通の判断基準。


▼確率といえば‥ウマ!?



【確率分母(K)計算式】
  =1/〇〇%

 EX.80%の場合
  =1/80% = 1.25

  =1.96^2*(1.25-1)/10%^2


【90%の確率で信頼できる試行回数の計算式】

  試行回数(N) = 1.65^2 × ( 確率分母(K) – 1 ) ÷ 誤差(R)^2


【試行回数から誤差を求める計算式(確度90%)】
 ※N回転させた場合、90%の確度なら確率はどんな範囲に収まるかの計算式

  誤差(R)^2 = 1.65^2 x ( 確率分母(K) – 1 ) ÷ 試行回数(N)



1/2の確率で起こるバグの改修試験は何回すべきか統計学で考える
384回試験し、バグが発生しないことを確認出来たら「2回に1回発生するバグを改修できた。」と判断してよいことになる。


▼それとも‥お守り!?




2020年05月18日

Windows gmailを送信するとメールの配信エラーになってしまう場合のSMTPサーバー確認方法

ErrorScreen

gmailを送信しようとしたところ、以下の配信エラーが発生しメールが送信できない状況に陥った。



メールの配信エラー

[名前] の機能を使用して、別のアドレスまたは別のエイリアスからこのメールを送信しようとしています。[名前] のアカウントの設定に誤りがあるか、設定が最新の状態ではありません。設定を確認して、もう一度送信してみてください。

応答:TLS Negotiation failed, the certificate doesn't match the host.




色々と調べてみたところ、どうやらGoogle側のセキュリティ強化があり、正しいSMTPサーバーを設定しないと送信が出来なくなっているらしい。

そこで、現在設定してある
「SMTPサーバー」から「IPアドレス」を取得。
次に、
「IPアドレス」から「逆引き」検索。
を行い、「SMTPサーバー」の設定変更を行ったところ、エラーなくgmailが送信できるようになった。


【SMTPサーバー確認手順】
1)gmailの設定>アカウントとインポート
Account and import


2)対象となるメールアドレスの「情報を編集」を押下
Edit information


3)次のステップを押下
Press next step


4)SMTPサーバーの部分をメモ
Refrain from the SMTP server part


5)コマンドプロンプトを起動する
Launch Command Prompt


6)以下のコマンドを入力する
   ping SMTPサーバー(※4でメモしたSMTPサーバーを入力)
Enter the SMTP server name command


7)アドレスをメモ
Refrain from address


8)以下のコマンドを入力する
   nslookup アドレス(※7でメモしたアドレスを入力)
Enter the address command


9)名前をメモ
Refrain from name


10)9でメモした名前をSMTPサーバーへ入力する
Enter name to SMTP server


11)パスワードを入力し「変更を保存」ボタンを押下
Enter password and press Save changes button

2020年04月21日

VBA 配列を戻り値として受け取る

Functionから戻り値を受け取る配列は動的配列にしておく


Sub HairetsuTest()

    Dim receiveNo() As Long
   
    receiveNo() = GetNeedData()
   
    MsgBox receiveNo(0) & vbCrLf & receiveNo(1)
       
End Sub


Function GetNeedData()

    Dim sendNo(1) As Long
   
    sendNo(0) = 1000
    sendNo(1) = 2000

    GetNeedData = sendNo()
   
End Function

2020年03月18日

VBA Rangeの利用例

Rangeの後に何が記載されるかで、全く違う意味合いとなる。見落としに注意する。


Range("B1")
 B1セルを指定する

Range("B1").column
 B1セルの列番号を取得する → B1セルの列番号:2 を返す

Range("B1").Row
 B1セルの行番号を取得する → B1セルの行番号:1 を返す

Range("B1").Count
 指定(選択)しているセルの数を取得する

Range("B1").Clear
 B1セルの値をクリアする

Range("B1").Insert
 B1セルへセルを挿入する → 挿入後下方向にシフトする

Range("B1").Address
 B1セルのアドレスを取得する


【関連記事】 RangeとCellsの範囲指定サンプル

2020年02月15日

VBA 特定のセルを選択した際にユーザーフォームを呼び出す

B2セルを選択した際にユーザーフォームが呼び出されている画像

B2セルを選んだときにユーザーフォームを呼び出すサンプル

  Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   
      If Target.Address = Range("B2").Address Then

          UserForm1.Show
       
      End If

  End Sub


※ユーザーフォームのオブジェクト名 : UserForm1


2020年01月16日

VBE 定義の表示(宣言元を開くジャンプ機能)

変数やプロシージャの宣言場所・実装場所へジャンプする

下記ショートカットキーで宣言している箇所にジャンプすることができる。
また、そこから元の位置に戻ることもできる。

なお、このジャンプ機能は「定義の表示」と呼ばれている。


【宣言箇所へのジャンプ】
Shift + F2

【ジャンプした箇所から元の位置へ戻る】
Ctrl + Shift + F2

2019年12月16日

VBA Do While文・Do Until文の使い分け

・Do While文は「継続条件」を書く
・Do Until文は「終了条件」を書く

違いは条件指定のみ。
そのため、どちらを利用しても書くことができる。

使い分けとしては、
「他の人が見たときに、やりたいことを直感的に理解しやすい方」を使う


Do Until文を使ったプログラム
Sub sample()
    Dim strFILENAME As String
    Dim intFF As Integer
    Dim strRec As String
   
    'ファイルを開く
    strFILENAME = Application.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE)
    'キャンセル処理
    If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then
        Exit Sub
    End If
   
    'FreeFile値の取得
    intFF = FreeFile
    '指定ファイルをOPEN
    Open strFILENAME For Input As #intFF
   
    'EOFまで繰り返す(EOFで終了)
    Do Until EOF(intFF)
        '行単位にレコードを読み込む
        Line Input #intFF, strRec
        'A1セルに読み込んだ値を代入
        Range("A1").Value = strRec
    Loop
   
    '指定ファイルをCLOSE
    Close #intFF
   
End Sub



Do While文を使ったプログラム
Sub sample()
    Dim strFILENAME As String
    Dim intFF As Integer
    Dim strRec As String
   
    'ファイルを開く
    strFILENAME = Application.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE)
    'キャンセル処理
    If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then
        Exit Sub
    End If
   
    'FreeFile値の取得
    intFF = FreeFile
    '指定ファイルをOPEN
    Open strFILENAME For Input As #intFF
   
    'EOFまで繰り返す(EOF以外は継続)
    Do While Not EOF(intFF)
        '行単位にレコードを読み込む
        Line Input #intFF, strRec
        'A1セルに読み込んだ値を代入
        Range("A1").Value = strRec
    Loop
   
    '指定ファイルをCLOSE
    Close #intFF
   
End Sub

2019年11月12日

VBScript MsgBox関数でメッセージボックスを表示する

ユーザに何らかのメッセージを通知するために表示されるメッセージボックス。
メッセージボックスを表示するにはMsgBox関数を利用する。

<構文>
MsgBox ≪"Prompt" [, Buttons] [, Title] [, HelpFile, Context]≫

Promp (必須):ダイアログボックスに表示するメッセージを指定
Button(省略可):ダイアログボックスに表示するボタンの種類やアイコンのスタイルなどを指定
Title(省略可):ダイアログボックスのタイトルバーに表示するタイトルを指定
Helpfile(省略可能):ダイアログボックスの[ヘルプ]ボタンから開くヘルプファイルを指定。引数helpfileを指定する場合は、引数contextも必ず指定する。


<使用例>
 MsgBox "TEST表示"

   example_test.jpg


【文字列を連結する】
文字列の連結には「&」を使う

<使用例>
 MsgBox "TEST表示" & "OK"

   example_connect.jpg



【メッセージを改行する】
MsgBoxのメッセージを改行するには以下のコードを利用する

new line_list.jpg


<使用例>
MsgBox "TEST表示" & vbCr & "OK"

   example_newline.jpg


【タイトルを設定する】
メッセージボックス(MsgBox)に、タイトルを表示することができる。
引数が複数ある場合は、「,」(カンマ)で区切る決まりとなっているため、省略した引数のカンマは残しておく必要がある。

<使用例>
MsgBox "TEST表示" & vbCr & "OK",,"タイトルTEST"

   example_Title.jpg



【関連記事】
MsgBox関数で定数を利用する
MsgBoxで日本語を使うと文字化けが発生する
タスクスケジューラのメッセージを最前面に表示するスクリプト

2019年10月04日

VBScriptの基本的なルール

VBScriptを書き始めるにあたっての基本的なルール。


1.拡張子は「.vbs」
 VBSの実行は保存したファイルをダブルクリックする(もしくは右クリック→開く)

2.コメントは「'(シングルクォーテーション)」を最初につける
 複数行にまたぐ//のようなコメントはVBScriptには用意されていない

3.文字は「”(ダブルクォーテーション)」、日時は「#(シャープ)」で括る

4.文字列結合演算子は2種類ある
 「+」または「&」

5.一行目に「Option Explicit」を記述する
 ソースコードの1行目ににOption Explicitを記述しておけば型のエラーを検出してくれる

6.セミコロンの代わりに改行
 VBScriptでは式の終わりを改行で表す
 ※複数行に式がまたがる場合は、行末に半角スペースと_(アンダースコア)を記述する。

7.ifの条件式には「()括弧」を使わずthenを使う

8.VBScriptで扱われる変数は全てバリアント(Variant)型
 どんな値でも格納できる

9.変数の値を知るには MsgBox などをチェックする行に挿入する
その買うを、もっとハッピーに。|ハピタス
\ハピタスの紹介キャンペーンです/
⇒登録後に行う「ハピタス検定」の答えはこちら

※ハピタスをもっと知りたいかたは他で検索してみてください

ブログ内を検索
ファン
カテゴリ
よく倒されますが、へこたれながら起き上がるSEの備忘録です

Windows(20)
SQL(17)
JAVA(4)
VBScript(14)
VBA(15)
Other(14)
書籍(1)
記事ランキング
  1. 1. 確率の収束に必要な試行回数
  2. 2. no img Windows ディスク使用率100%を改善させる
  3. 3. no img VBScript マウスポインタを自動的に移動させクリックするスクリプト
  4. 4. no img Tera Term(テラターム) 覚えておくと便利なコマンド一覧
  5. 5. VBScript タスクスケジューラのメッセージを最前面に表示するスクリプト
広告
会員登録せずに無料で読める!! 漫画読み放題のサービス

動画編集・YouTuberを始めたい方向け 無料動画編集ソフト

クラウド型レンタルサーバー クラウド型レンタルサーバー

Amazonで購入する
※Amazonのアソシエイトとして、七転八起SEの備忘録は適格販売により収入を得ています。

メンタルヘルス・マネジメント検定試験II種ラインケアコース過去問題集_2023年度版
メンタルヘルス・マネジメント検定試験II種 過去問題集〈2023年度版〉