'This is 「MK2判定処理」ブックファイル
'一部しようしていない変数とか関数あり
'一部グローバル変数は、ブックモジュール、[Thisworkbook]に記載した
'Public glbSoundCountArray() As Integer
Public glbCount As Integer
'20こ 作る
Public glbcompanyKobetsuCount1 As Integer
Public glbcompanyKobetsuCount2 As Integer
Public glbcompanyKobetsuCount3 As Integer
Public glbcompanyKobetsuCount4 As Integer
Public glbcompanyKobetsuCount5 As Integer
Public glbcompanyKobetsuCount6 As Integer
Public glbcompanyKobetsuCount7 As Integer
Public glbcompanyKobetsuCount8 As Integer
Public glbcompanyKobetsuCount9 As Integer
Public glbcompanyKobetsuCount10 As Integer
Public glbcompanyKobetsuCount11 As Integer
Public glbcompanyKobetsuCount12 As Integer
Public glbcompanyKobetsuCount13 As Integer
Public glbcompanyKobetsuCount14 As Integer
Public glbcompanyKobetsuCount15 As Integer
Public glbcompanyKobetsuCount16 As Integer
Public glbcompanyKobetsuCount17 As Integer
Public glbcompanyKobetsuCount18 As Integer
Public glbcompanyKobetsuCount19 As Integer
Public glbcompanyKobetsuCount20 As Integer
'ReDim glbSoundCountArray(glbcompanyCount - 1)
' 19は最大値。全個数ではない。0-19で20個で、19が最大値。これがエクセル仕様
'For i = 0 To UBound(glbSoundCountArray)
' glbSoundCountArray(i) = 0
'Next i
'K7:循環参照でエラー =IF(OR(G7="DOWN",G7="UP"),myCell(),0)
'IFSに関数をいれると正常に機能しない。 =IFS(G7="DOWN",playCount(),G7="UP",playCount(),TRUE,countReset())
'IFSは、条件文を無視して全部実行してる。しょうもない仕様かそれともバグか
'★重要 bookを開いたときに実行する
'Private Sub workbook_open()は、[Thisworkbook]に記載する arrayは宣言できない
Private Sub Worksheet_Activate()
If ActiveSheet.name = "hantei" Then
Debug.Print ("hantei open") '処理
End If
End Sub
'Function myCellReset() As Integer
' myCellReset = 0
'End Function
'Function myCell() As Integer
' myCell = 1
'End Function
'Function hokanCell() As Integer
' from myCell()
' hokanCell = Int(Range("K7").Value)
'End Function
'個別銘柄再生用の加算関数。20個ある。配列かコレクションにするとよい
Function kobetsuPlayCount(m As Integer) As Integer
Select Case m
Case 1
glbcompanyKobetsuCount1 = glbcompanyKobetsuCount1 + 1
kobetsuPlayCount = glbcompanyKobetsuCount1
Case 2
glbcompanyKobetsuCount2 = glbcompanyKobetsuCount2 + 1
kobetsuPlayCount = glbcompanyKobetsuCount2
Case 3
glbcompanyKobetsuCount3 = glbcompanyKobetsuCount3 + 1
kobetsuPlayCount = glbcompanyKobetsuCount3
Case 4
glbcompanyKobetsuCount4 = glbcompanyKobetsuCount4 + 1
kobetsuPlayCount = glbcompanyKobetsuCount4
Case 5
glbcompanyKobetsuCount5 = glbcompanyKobetsuCount5 + 1
kobetsuPlayCount = glbcompanyKobetsuCount5
Case 6
glbcompanyKobetsuCount6 = glbcompanyKobetsuCount6 + 1
kobetsuPlayCount = glbcompanyKobetsuCount6
Case 7
glbcompanyKobetsuCount7 = glbcompanyKobetsuCount7 + 1
kobetsuPlayCount = glbcompanyKobetsuCount7
Case 8
glbcompanyKobetsuCount8 = glbcompanyKobetsuCount8 + 1
kobetsuPlayCount = glbcompanyKobetsuCount8
Case 9
glbcompanyKobetsuCount9 = glbcompanyKobetsuCount9 + 1
kobetsuPlayCount = glbcompanyKobetsuCount9
Case 10
glbcompanyKobetsuCount10 = glbcompanyKobetsuCount10 + 1
kobetsuPlayCount = glbcompanyKobetsuCount10
Case 11
glbcompanyKobetsuCount11 = glbcompanyKobetsuCount11 + 1
kobetsuPlayCount = glbcompanyKobetsuCount11
Case 12
glbcompanyKobetsuCount12 = glbcompanyKobetsuCount12 + 1
kobetsuPlayCount = glbcompanyKobetsuCount12
Case 13
glbcompanyKobetsuCount13 = glbcompanyKobetsuCount13 + 1
kobetsuPlayCount = glbcompanyKobetsuCount13
Case 14
glbcompanyKobetsuCount14 = glbcompanyKobetsuCount14 + 1
kobetsuPlayCount = glbcompanyKobetsuCount14
Case 15
glbcompanyKobetsuCount15 = glbcompanyKobetsuCount15 + 1
kobetsuPlayCount = glbcompanyKobetsuCount15
Case 16
glbcompanyKobetsuCount16 = glbcompanyKobetsuCount16 + 1
kobetsuPlayCount = glbcompanyKobetsuCount16
Case 17
glbcompanyKobetsuCount17 = glbcompanyKobetsuCount17 + 1
kobetsuPlayCount = glbcompanyKobetsuCount17
Case 18
glbcompanyKobetsuCount18 = glbcompanyKobetsuCount18 + 1
kobetsuPlayCount = glbcompanyKobetsuCount18
Case 19
glbcompanyKobetsuCount19 = glbcompanyKobetsuCount19 + 1
kobetsuPlayCount = glbcompanyKobetsuCount19
Case 20
glbcompanyKobetsuCount20 = glbcompanyKobetsuCount20 + 1
kobetsuPlayCount = glbcompanyKobetsuCount20
Case Else
glbcompanyKobetsuCount1 = glbcompanyKobetsuCount1 + 1
kobetsuPlayCount = glbcompanyKobetsuCount1
End Select
End Function
Function kobetsuCountReset(m As Integer) As String
Select Case m
Case 1
glbcompanyKobetsuCount1 = 0
Case 2
glbcompanyKobetsuCount2 = 0
Case 3
glbcompanyKobetsuCount3 = 0
Case 4
glbcompanyKobetsuCount4 = 0
Case 5
glbcompanyKobetsuCount5 = 0
Case 6
glbcompanyKobetsuCount6 = 0
Case 7
glbcompanyKobetsuCount7 = 0
Case 8
glbcompanyKobetsuCount8 = 0
Case 9
glbcompanyKobetsuCount9 = 0
Case 10
glbcompanyKobetsuCount10 = 0
Case 11
glbcompanyKobetsuCount11 = 0
Case 12
glbcompanyKobetsuCount12 = 0
Case 13
glbcompanyKobetsuCount13 = 0
Case 14
glbcompanyKobetsuCount14 = 0
Case 15
glbcompanyKobetsuCount15 = 0
Case 16
glbcompanyKobetsuCount16 = 0
Case 17
glbcompanyKobetsuCount17 = 0
Case 18
glbcompanyKobetsuCount18 = 0
Case 19
glbcompanyKobetsuCount19 = 0
Case 20
glbcompanyKobetsuCount20 = 0
Case Else
glbcompanyKobetsuCount1 = 0
End Select
End Function
'カウントして、再生がリピートするのを防止する
Function playCount() As Integer
glbCount = glbCount + 1
playCount = glbCount
End Function
Function countReset() As String
glbCount = 0
countReset = "non"
End Function
Function BeepMe(strCheck As String) As String
If strCheck = "DOWN" Then
'Beep 'DOWN
Shell "C:\Program Files\Windows Media Player\wmplayer.exe C:\Users\mased\Documents\CeVIO\合成\株価下落合成ヒューンと落下.wav", 1
ElseIf strCheck = "UP" Then
Shell "C:\Program Files\Windows Media Player\wmplayer.exe C:\Users\mased\Documents\CeVIO\合成\株価上昇合成.wav", 1
'Beep 'UP
End If
'Debug.Print ("beep")
BeepMe = "PLAY"
End Function
'セルのマクロで使用
Function soundPlay(strCheck As String) As String
If strCheck = "DOWN" Then
soundPlay = "PLAY"
'Beep
ElseIf strCheck = "UP" Then
soundPlay = "PLAY"
' Beep
Else
soundPlay = "non"
End If
End Function
'IFS関数をつかうと関数を全部トレースしてしまう。なんで?バグか 2022/01/17
Function soundAlert(check As Integer) As String
'switch case 1
Select Case check
Case 1
'down
'Range("H7").Value = "sound" ERROR他のセルに値をいれようとするとエラー
soundAlert = "DOWN"
Case 2
'UP
soundAlert = "UP"
Case Else
'non
soundAlert = "-*not yet*-"
End Select
End Function
'====================================
'====================================
'====================================
Sub meigaraget()
'株価取得ボタンのスクリプト
Dim i As Integer
Dim n, m As Integer
Dim code
Dim ws As Worksheet 'こっちは単数のsheet
Dim wsKabulist As Worksheet
glbcompanyCount = 20 '現在20個固定。理由は無限にすると処理が遅くて面倒なのとマクロとVBAの処理の面倒さで固定にした。
'Aの最終行を取得してループして株価を表示させる
n = Cells(Rows.count, "A").End(xlUp).Row
Debug.Print (n)
Debug.Print (glbcompanyCount)
'企業は20件固定。
If n > glbcompanyCount Then
n = glbcompanyCount
MsgBox ("登録できるのは20個です。21個目からは除外されます。")
End If
'kabulistシートのコードをhateiシートのセルにコピーする
Set ws = Worksheets("hantei") '複数sheets, Set ws=としないとオブジェクトエラーになる
Set wsKabulist = Worksheets("kabulist")
iStart = 15 '15行目から1番目が始まる
For i = 2 To n + 1
'Aセルの10行目からコードを入力する
code = wsKabulist.Cells(i, 1)
If code <> "" Then
'旧 "=RSS|'" & code & ".T’!銘柄名称"
'新 =@RssMarket(A2,"銘柄名称")、ダブルクォーテーションは2個余分に付ける。よって見た目が3個になる
ws.Cells(iStart, 1).Value = code
ws.Cells(iStart, 2).Value = "=@RssMarket(A" & iStart & "," & """銘柄名称""" & ")"
ws.Cells(iStart, 3).Value = "=@RssMarket(A" & iStart & "," & """現在値""" & ")"
ws.Cells(iStart, 4).Value = "=@RssMarket(A" & iStart & "," & """前日比""" & ")"
ws.Cells(iStart, 5).Value = "=@RssMarket(A" & iStart & "," & """前日比率""" & ")"
ws.Cells(iStart, 6).Value = "=@RssMarket(A" & iStart & "," & """始値""" & ")"
'I cell 安値、高値セルマクロを入れる。2022/01/16 F:6, G:7, H:8 ,I:9
ws.Cells(iStart, 9).Value = "=IFS(" & "C" & iStart & "=0,""""" & "," & "C" & iStart & "="""",""""," & "G" & iStart & "="""",""""," & "H" & iStart & "="""",""""," & "G" & iStart & ">=C" & iStart & ",""DOWN""," & "H" & iStart & "<=C" & iStart & ",""UP"",TRUE,""not yet"")"
'J cell count '=IF(OR(G7="UP",G7="DOWN"),playCount(),countReset())
ws.Cells(iStart, 10).Value = "=IF(OR(I" & iStart & "=""UP"",I" & iStart & "=""DOWN""),kobetsuPlayCount(" & (i - 1) & "),kobetsuCountReset(" & (i - 1) & "))"
'K '=IF(AND(H7=1,G7="DOWN"),BeepMe("DOWN"),"non")
ws.Cells(iStart, 11).Value = "=IF(AND(J" & iStart & "=1,I" & iStart & "=""DOWN""),BeepMe(""DOWN""),""non"")"
'L '=IF(AND(H7=1,G7="UP"),BeepMe("UP"),"non")
ws.Cells(iStart, 12).Value = "=IF(AND(J" & iStart & "=1,I" & iStart & "=""UP""),BeepMe(""UP""),""non"")"
ws.Cells(iStart + 1, 2).Value = "=@RssMarket(A" & iStart & "," & """最良売気配値""" & ")"
ws.Cells(iStart + 1, 3).Value = "=@RssMarket(A" & iStart & "," & """最良買気配値""" & ")"
ws.Cells(iStart + 1, 4).Value = "=@RssMarket(A" & iStart & "," & """出来高""" & ")"
'セルの列を追加するときにClearAll()にも空欄用のスクリプトを入れること
iStart = iStart + 2 '奇数行がコードが入る
End If
Next i
Worksheets("hantei").Select
End Sub
Sub clearAll()
'クリアボタン
clearCode
End Sub
Sub clearCode()
Dim n As Integer
Dim wsKabulist As Worksheet
Set wsKabulist = Worksheets("kabulist")
'Aの最終行を取得してループして株価を表示させる
n = Cells(Rows.count, "A").End(xlUp).Row
For i = 2 To n
Cells(i, 1).Value = ""
Cells(i, 2).Value = ""
Cells(i, 3).Value = ""
Cells(i, 4).Value = ""
Cells(i, 5).Value = ""
Cells(i, 6).Value = ""
Cells(i, 7).Value = ""
Next i
End Sub
'====================================
'====================================
Sub openCheckBook()
'エクセルファイルが開いているかをチェックする
Dim checkFilePath
'ここにブックファイルの絶対パスを入れる予定。クラウドのパスが面倒なので後で入れる。
checkFilePath = ""
If IsBookOpened(checkFilePath) <> True Then
MsgBox ("MK2株価表示ONLYブックファイルが開いていません")
End If
End Sub
'参考 ブックが開かれているかチェックする https://vbabeginner.net/check-if-the-book-is-open/
Function IsBookOpened(a_sFilePath) As Boolean
On Error Resume Next
'// 保存済みのブックか判定
Open a_sFilePath For Append As #1
Close #1
If Err.Number > 0 Then
'// 既に開かれている場合
IsBookOpened = True
Else
'// 開かれていない場合
IsBookOpened = False
End If
End Function
Sub copyFromBookSheet()
'copy from book sheet 2022/01/13
Dim bookfilename
Dim temp
Dim wb As Workbook 'workbooksコレクション(sあり)からWorkbookオブジェクト(sなし)へ渡す
'For i = 1 To Workbooks.Count
' Debug.Print (Workbooks(i).Name)
'Next i
'このファイル名は、静的変数に後でするつもりだったけどWokbookオブジェクトにした
'bookfilename = "MK2株価表示ONLY01.xlsm"
Set wb = Workbooks("MK2株価表示ONLY01.xlsm")
'ここは別の関数にしてループ処理する
Call nikkeiHeikin(wb)
Call codeInfo(wb)
End Sub
Sub codeInfo(wb As Workbook)
'code 株価、始値等のセルをコピーする
End Sub
Sub nikkeiHeikin(wb As Workbook)
'日経平均株価
ThisWorkbook.Worksheets("hantei").Range("B7").Value = wb.Worksheets("kabu1").Range("B4").Value
'前日比
ThisWorkbook.Worksheets("hantei").Range("C7").Value = wb.Worksheets("kabu1").Range("C4").Value
'前日比率
ThisWorkbook.Worksheets("hantei").Range("D7").Value = wb.Worksheets("kabu1").Range("D4").Value
'先物 期近
ThisWorkbook.Worksheets("hantei").Range("B8").Value = wb.Worksheets("kabu1").Range("B5").Value
'先物 期先
ThisWorkbook.Worksheets("hantei").Range("B9").Value = wb.Worksheets("kabu1").Range("B6").Value
End Sub