36歳からの、ぼうけんのしょ

自分が後で見返したくなるようなブログ

#0001 : 今月は資格試験月間です

今月は資格試験を2つ受けます。

 

4月11日(日):数検2級

4月18日(日):応用情報技術者試験

 

どちらも午前と午後に分かれてまして、

午前が基本・午後が応用

みたいなイメージです。

 

午前は8割ぐらい取れそうですが、

午後がなかなか…

どちらも合格点ボーダーライン上、

という感じでしょうか。

 

過去問を繰り返し(4周以上)解いてたら

「午前8割」

はいけるんですが、

午後は応用なのでただ単に暗記するだけだときついですね~

 

本番まであと

数検2級:4日

応用情報:11日

なんですが、

数検については微分積分と対数が苦手なので基礎から見直します。

あとは過去問で間違ったところを繰り返す。

 

応用情報については午前対策として間違ったところを復習しつつ、

午後対策として解いた過去問の解説をひたすら読み込む、

という感じで進めたいと思います。

 

進捗はまた明日。

【VBAで業務改善ツール】顧客リストから宛名シールを簡単に印刷する!

うちの会社では、年始になるとほとんどのお客さんに資料を送付する、という業務が発生します。
具体的な数はわからないんですが、全顧客が900社ぐらいですので、
少なく見積もっても半分の450社には送ってますね。

資料を送るときにめんどくさいのが
「宛名を書く」
ということなのですが、非IT企業であるからか、みんなそこは根性で書ききってます。

たまに宛名シールをうまく活用している人もいるのですが、
宛名シールを印刷するエクセルやワードにひたすらコピペを繰り返してるとのことでした。

めっちゃめんどくさいことしてるなーと思いつつ、今まではそのままにしてたんですが、
ちょっと僕も手伝うことになってきたので思い切ってツールを作りました。

とは言えそんなに仰々しいものではなく、
顧客リストに新たに列を作り、
そこに数字が入ってたら印刷シートにコピペする、
そして印刷!という簡単なものです。

全体のコードはこんな感じ。

Sub printLabel()
    
    '変数定義===========
    Dim ws_main As Worksheet
    Dim ws_print As Worksheet
    Dim last_row As Variant
    Dim print_row As Variant
    Dim print_column As Variant
    Dim page_count As Variant
    Dim cnt As Variant
    Dim i As Integer
    '===================
    
    '変数設定===========
    Set ws_main = Worksheets("顧問先")
    Set ws_print = Worksheets("印刷")
    last_row = ws_main.Range("A1048576").End(xlUp).Row
    print_row = 1
    print_column = 1
    
    cnt = 0
    
    '===================
    
    '1. 印刷シートのデータを削除
    ws_print.Range("A:G").ClearContents

    
    '2. 顧問先シートから必要な情報を印刷シートへコピー&ペースト
    For i = 2 To last_row
        page_count = ws_main.Cells(i, 11).Value
        If page_count <> 0 Then
            ws_print.Cells(print_row, print_column).Value = ws_main.Cells(i, 2).Value                                           '郵便番号
            ws_print.Cells(print_row + 1, print_column).Value = ws_main.Cells(i, 3).Value & ws_main.Cells(i, 4).Value           '都道府県+市区町村名等
            ws_print.Cells(print_row + 2, print_column).Value = ws_main.Cells(i, 5).Value                                       'ビル名等
            ws_print.Cells(print_row + 4, print_column).Value = ws_main.Cells(i, 6).Value & " " & ws_main.Cells(i, 7).Value    '会社名+敬称
            
            '印刷する対象列を移動
            print_column = print_column + 2
            
            '宛名ラベルの4列目まで終わったら1列目へ移動
            If print_column = 9 Then
                print_column = 1
                cnt = cnt + 1
                
                '郵便番号行は6行ごとにペーストするが、印刷ページをまたぐとき(=宛名の4列目から次のページへいくとき)は5行下にペーストする
                If cnt = 5 Then
                    print_row = print_row + 5
                    cnt = 0
                Else
                    print_row = print_row + 6
                End If
            End If
            
        End If
    Next


    '3. 印刷シートを印刷
    ws_print.PrintOut
    
End Sub


一番ややこしかったのが、
「宛名シールのサイズに合わせて出力する」
ということであり、コードより見た目の調整にめっちゃ時間かかりました(笑)

ただ、その調整があまりにも難しかったので完璧に宛名シールと一致はしておらず、
そのせいか微調整のための列を入れたり、
宛名シールの1枚目から2枚目に印刷範囲が移動するあたりの行を設定する、
というコードがややこしかった…

ちなみにエクセルはこんな感じ。


f:id:ryota_biz:20210121180828p:plain
これが顧客リスト。


f:id:ryota_biz:20210121180822p:plain
これが印刷されるシート。


この、印刷されるシートの29行目から30行目(宛名シールの1枚目から2枚目)にいくとき、
通常は6行で1会社なんですが、宛名シールの最後だけ5行で1会社なんですよね。

それがややこしかった…

宛名シールのサイズにちょうど合うように設定してからやればいいんでしょうけど、
その時間がなかったので暫定ということで…

業務改善のためのツール作りが一番楽しいな~

2021年の勉強リスト

2021年は、ひたすら勉強をする1年にしたいと思ってます。

ただ勉強をするだけじゃなく少しずつでもログを残せたらと思い、

今まで何度も挫折してたブログを再開。

勉強の結果だけでなく効率的な勉強法や気づいたことなどをメモっていきたい。

メインは勉強のこと、あとは思ったことを、思ったままに。

 

ひとまず、現在勉強してることはこんな感じ。

  

 

がんばろー!