2-2.銘柄コード検索
(1) 概略
会社名は判るが銘柄コードが判らず知りたいことがありますが、そんな時の為に
解析ツールにはコード検索もあると便利です。ここでは下図のようなユーザーフォームを
自作してコード番号を検索する方法を説明します
なお、検索に使用する基データが必要ですが、本例の場合Sheet2へ東証1部の
コード番号と銘柄を貼り付けてあります。(下図参照)
(2)メインオブジェクト
Dim bangou(1, 3000) As String '東証一覧 '[1]
Dim koudock As Integer '行保存用 '[2]
Sub コード検索()
Application.ScreenUpdating = False
If bangou(1, 0) <> "取込済み" Then '[3]
ThisWorkbook.Worksheets("Sheet2").Activate
Cells(10000, 1).End(xlUp).Select
endr = Selection.Row
Range("A1").Select
For i = 1 To endr '[4]
bangou(0, i) = Cells(i, 1)
bangou(1, i) = Cells(i, 2)
Next
bangou(0, 0) = endr '[5]
bangou(1, 0) = "取込済み"
End If
Worksheets("Sheet1").Select
UserForm1.txt2.SetFocus
UserForm1.Show 0 '[6]
End Sub
[1] 東証一覧を入れる配列を宣言
[2] 変数"koudock" は1度チェックしたコードを避ける為チェック済み行を保存用
[3] マクロを実行した時東証一覧を配列へ入れているが、配列に既にある場合はパス
[4] 配列へ取り込み
[5] データは1以降に取り込んであり、後で使用の関係で0にはデータ量と"取込済み"を記録
[6] ユーザーフォーム表示(モ-ドレスの0指定の場合Excel2000以降が対象)
(3)ユーザーフォームモジュール
Private Sub CommandButton1_Click()
Call 検索
End Sub
[1] 「コード検索」ボタンクリックで、プロシージャ「検索」をコール
(3)検索を実行するマクロ
Sub 検索()
Dim koudo As String '銘柄番号
Dim rm1 As Integer 'セル位置
dat = UserForm1.txt2.Text '[1]
If dat = "" Then
MsgBox "社名を指定して下さい。"
Exit Sub
End If
For rm1 = koudock To bangou(0, 0) '[2]
If InStr(1, bangou(1, rm1), dat, 1) > 0 Or InStr(1, bangou(0, rm1), dat, 1) > 0 Then
koudo = bangou(0, rm1)
meigara = bangou(1, rm1)
With UserForm1 '[3]
.txt3.Text = "検索した[" & meigara & "]は【" & koudo & "】"
.txt1.Text = koudo
End With
koudock = rm1 + 1
Exit For
End If
Next
If koudock = 1 And koudo = "" Then '[4]
MsgBox "検索した[" & dat & "]はありません。" & Chr$(10) _
& "データが漏れている場合は、このブックのSheet2へ追加して下さい"
koudock = 1
End If
If koudock <> 1 And koudo = "" Then '[5]
MsgBox "検索した[" & dat & "]は検索終了"
koudock = 1
End If
End Sub
[1] テキストボックス(txt2)を読み取り
[2] 検索の実行
・配列(bangou)の内容をチェックする。この時検索スタートは変数(koudock)に入っている番号から
・チェックとしては配列の0列、1列で行っており、番号を入れた場合の銘柄も検索できます
・InStr(1, bangou(1, rm1), dat, 1)の最後の「1」指定で大文字/小文字を区別しないで検索です
[3] 文字に合致(1部でもOK)が合った場合、テキストボックス(txt3)へ表示
・この時テキストボックス(txt1)にも入れる(コード番号で別マクロ実行の場合はこちらを使用)
・koudock = rm1 + 1 → 次回の検索は次の配列番号から行う為に+1する
[4] 検索した文字が無い場合メッセージ表示
[5] 検索終了の処理
【戻る】