win11_ウィンドウ間のサイズ調整バーがいらない_設定不可

2つのウィンドウの伸び縮みができるバーが登場するのだが、

別にウィンドウがぴったり合ってなくていいので、

このバーを表示しないように設定したいが、結論としてできなかった。

 

ウィンドウ間のバー

 

ググったところ、設定できるらしいが…

 

自分の設定画面にはその項目が存在しなかった。

 

 

マネックス_つみたてNISA_勘定廃止

マネックスのオンラインでの説明に抜け漏れがあり、説明が尽くされていない。

フローチャートでの説明は不可能なんだろうか。

「わからなかったら電話して」よりも問い合わせコストが下がって顧客満足度が上がると思う。

テキストを読み解くよりも、フローチャートを読み解くほうが難しいと考えられているのだろうか。

 

既存のNISA口座をマネックスに移管したく説明を読んでいるのだが、

つみたてNISAを申込む  ←→ マネックス証券への金融機関変更について

でループしてしまう。

勘定廃止通知書はすでに入手しており、ここをクリアできれば完了できる。

 

 

 

https://info.monex.co.jp/nisa/procedure.html#tomonex

 

https://info.monex.co.jp/nisa/tsumitate/apply.html

 

 

VBA_シートAからシートBに転記する_時間 → 文字列変換

シートAからシートBに転記するVBAを作成した。

業務としては勤怠表がExcel管理で、(1)日々の勤怠をファイルAに、(2)毎月の勤怠をファイルAの記述をもとに別フォーマットのファイルBに記載していた。

(2)ではファイルAの勤怠表に記載した時間を、時間と分に分解してそれぞれセルに記載しないといけない。(ファイルAの8:30をファイルBでは8と30で入力)

サブリーダーとリーダーの方がチェックする時間と、自分が入力する時間が本当に無駄な時間だと思っていた。

根本的な問題としてExcel管理が時代遅れ過ぎているのだけど、解決すべくようやく時間に余裕ができたので作成した。

 

■時間がかかった点

普段使用している言語は JavaJavaScript で、ロジック組むようなVBAはまず作成してこなかった。

そんな状況の私が大変だったのは、

1. 時間 → 文字列変換

2. 例外処理

1に関してはライブラリないのかと調べたり、

2に関してはエラーが起きても直列に処理されてしまうので、exit subを使えばいいと理解するまで時間がかかってしまった。

 

スクリプト

'勤怠表を報告書にそのまま貼り付けられる形に編集する
Sub edit Work Time()
    
    On Error GoTo myError
    
    '末尾行を取得する
    Dim lastRow     As Integer
    lastRow getLastRow()
    
    '実績末尾行を取得する
    Dim midRow      As Integer
    midRow = getMidRow()
    Dim workTimeArray(30) As Variant
    Dim outerIndex  As Integer        '動的配列にしたいが、時間がないので月内最大日数で準備する
    outerIndex=0
    
    '■転記元シートから実績1を取得する
    Dim workResults1 As Range
    Set workResultsl = Range(Worksheets(2).Cells(36), Worksheets(2).Cells(midRow, 6))
    Dim workResult  As Range
    Dim workResultString As String
    Dim workTime    As Variant
    
    '実績を配列に格納する
    For Each workResult In workResults1
        workResultString = convertTimeToString(workResult.Value)
        '実績1の時間を時分に分ける
        workTime.Split(workResultString,":")
        
        '二次元配列に格納する
        workTimeArray(outerIndex)= workTime
        outerIndex =outerIndex + 1
    Next
    
    '■転記元シートから実績2を取得する
    Dim work Results2 As Range
    Set work Results2 = Range(Worksheets(2).Cells(midRow + 1, 12), Worksheets(2).Cells(lastRow, 12))
    
    '実績2を配列に格納する
    For Each workResult In workResults2
        
        '実績2の時間を時分に分ける
        workResultString =convertTimeToString(workResult.Value)
        Dim workTime2 As Variant
        workTime2 = Split(workResultString,";")
        
        '二次元配列に格納する
        workTimeArray(outerIndex) = workTime2
        outerIndex= outerIndex + 1
        
    Next
    
    'インデックスのインクリメントで末尾のみ不要なのでその分を減算する
    outerIndex= outerIndex -1
    
    '転記先シートに配列の値を代入する
    Dim dayCount    As Integer
    day Count=0
    
    '氏名を取得する
    Dim name        As String
    name =Worksheets(1).Range("F12").Value
    
    '氏名行を取得する
    Dim nameRange   As Range
    Set nameRange = Worksheets("転記先").Range("A14: A200")
    
    Dim nameCell    As Range
    Set nameCell = nameRange.Find(What: name, _
        LookIn:=xlValues, _
        LookAt:=x/Part, _
        SearchOrder:=xlByColumns, _
        SearchDirection:=xINext, _
        MatchCase: False, _
        MatchByte:=False)
    
    Din nameRow     As Integer
    nameRow = nameCell.Row
    
    'ループが及ばない可能性があるセルをクリアする
    Worksheets(転記先).Cells(nameRow, 32).ClearContents
    Worksheets(転記先).Cells(nameRow+1, 32).ClearContents
    Worksheets(転記先).Cells(nameRow, 33).ClearContents
    Worksheets(転記先).Cells(nameRow+1, 33).ClearContents
    Worksheets(転記先).Cells(nameRow, 34).ClearContents
    Worksheets(転記先).Cells(nameRow+1, 34).ClearContents
    
    For dayCount = 0 To outerIndex
        '値をクリア
        Worksheets(転記先).Cells(nameRow, dayCount + 4).ClearContents
        Worksheets(転記先).Cells(nameRow + 1, dayCount+4).ClearContents
        '配列要素数が3以外ならスキップ(時分秒に分割できなかった場合)
        If Not UBound(workTime) - LBound(workTime) +1=3 Then
            GoTo Continue
        End If
        '時分=0:00 ならスキップ
        If workTimeArray(dayCount)(0) = 0 And workTimeArray(dayCount)(1) ="00" Then
            GoTo Continue
        End If
        '1行目転記
        Worksheets(転記先).Cells(nameRow, dayCount+4).Value workTimeArray(dayCount)(0)
        '2行目転記
        Worksheets(転記先).Cells(nameRow+1, dayCount + 4).Value = workTimeArray(dayCount)(1)
        Continue:
    Next
    
    MsgBox "整形されました。"& vbCrLf & "転記先シートを確認してください。"
    Worksheets(転記先).Select
    Cells(nameRow, 4).Select
    Exit Sub
    
    myError:
    Select Case Err.Number
        Case 91
            MsgBox "完全一致する氏名がありませんでした。 " & vbCrLf & "処理を終了します。" & vbCrLf & Err.Description, vbExclamation
        Case 13
            MsgBox "時間の形式が不正です。" & vbCrLf & "処理を終了します。" & vbCrLf & Err.Description,  vbExclamation
        Case Else
            MsgBox "予期せぬエラーが発生しました", vbExclamation
    End Select
    
End Sub

'末尾行を取得
Public Function getLastRow()
    Dim lastRow     As Integer
    lastRow = Worksheets(2).Range("A3").End(xIDown).Row
    getLastRow = lastRow
End Function

'実績末尾行を取得
Public Function getMidRow()
    Dim midRow      As Integer
    midRow Worksheets(2).Range("I3").End(xIDown).Row-1
    getMidRow= midRow
End Function

'時間 → 文字列变换
Public Function convertTimeToString(ByVal time)
    '値を日付型に変換する
    dateDate= CDate(time)
    '値を文字列型に変換する
    dateString= CStr(dateDate)
    convertTimeToString = dateString
End Function

 

 

■所感

VBAは進化していない言語だが、その原因は広く使われすぎたことで、既存のスクリプト後方互換性を保証できなくなっていることなのかなーと思った。

いろんなレベルの人が使っている状況で(しかもプログラミングの素養がなかったりググったりできない人が99.99%くらいだったら)、VBAのバージョンを上げて動かなくなった場合、その問い合わせにいちいち回答していられないよねとは思う。

作ったサービスが広く使われたいが、広く(いろんな層に)使われれば使われるほど、その人たちへのフォローのコストがかさむ。

スーパーのアプリみたいにITリテラシーが低い人が使うアプリの評価って軒並み低いので、訴求対象はわかってる人に限定したいかな。

 

■余談

作成して2日後に勤怠管理をシステムに移行するということが聞こえてきて、もっと早く言ってよという気持ちでいっぱいになった。

当初の無駄な時間を削減するという目標は達成されることは喜ばしいです。

Dualsense 右スティック不調の状態を把握する

現在の状況

右スティック側のAXIS2, 3が0.01超過である。

実際はもっとスティックの反応がビクビクしていて痙攣しているような感じ。

絶対値で0.01以下だとよいらしい。

f:id:sh2ydap3:20220416104822p:plain

 

 

gamepad-tester.com

f:id:sh2ydap3:20220416104331p:plain

dualsense 右スティック不調