VBAで「罫線」を表示する

目安時間:約 4分

今回は、比率の計算と、計算結果にて、文字の色、背景色を付けるようにしました。

【課題】
・客単価を計算してD列に入れる。
・客単価は「売上 ÷ 客数」で計算し、小数以下2桁で表示する。
・罫線を表示する。

【VBA】

Sub 罫線()
    Dim i As Long
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).row
    For i = 2 To lastRow
        Cells(i, 4) = Cells(i, 2) / Cells(i, 3)
    Next
    Range(Cells(2, 4), Cells(lastRow, 4)).NumberFormatLocal = "#,##0.00"
    Range(Cells(1, 1), Cells(lastRow, 4)).Borders.LineStyle = xlContinuous
    Range(Cells(1, 1), Cells(lastRow, 4)).Borders.Weight = xlHairline
    Range(Cells(1, 1), Cells(lastRow, 4)).BorderAround Weight:=xlMedium
    Range(Cells(2, 1), Cells(2, 4)).Borders(xlEdgeTop).Weight = xlThin
    Range(Cells(1, 2), Cells(lastRow, 2)).Borders(xlEdgeLeft).Weight = xlThin
End Sub

 

簡単な説明

・「Cells(Rows.Count, 1).End(xlUp).row」は以前説明をしたのでこちらを御覧ください

・「For」は、客単価の計算をして設定

・「NumberFormatLocal = "#,##0.00"」は、小数以下2桁表示にする

・罫線の種類は「Borders.LineStyle」にて設定
・「xlContinuous」は、罫線の直線を表す
・罫線の太さは「Borders.Weight」にて設定
・「xlHairline」は、罫線の太さを表し、「極細」を設定
・罫線の外枠は、「BorderAround Weight:」にて設定
・「xlMedium」は、罫線の太さを表し、「中」を設定
・「xlEdgeTop」は、罫線の位置で「上端」
・「xlThin」は、罫線の太さを表し、「細」を設定
・「xlEdgeLeft」は、罫線の位置で「左端」

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

VBAで「比率計算・文字色・背景色」を表示する

目安時間:約 4分

今回は、比率の計算と、計算結果にて、文字の色、背景色を付けるようにしました。

【課題】
・昨年比欄 背景青、白文字 : 105%以上
・昨年比欄 青文字 : 100%以上、105%未満
・昨年比欄 黒文字 : 95%以上、100%未満
・昨年比欄 赤文字 : 90%以上、95%未満
・昨年比欄 背景赤、黒文字 : 90%未満
・前年売上差欄 今年売上 - 昨年売上

【VBA】

Sub 比率計算()
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).row
        Cells(i, 5) = Cells(i, 3) / Cells(i, 2)
        Cells(i, 4) = Cells(i, 3) - Cells(i, 2)
        Select Case Cells(i, 5)
            Case Is >= 1.05
                Cells(i, 5).Interior.Color = vbBlue
                Cells(i, 5).Font.Color = vbWhite
            Case Is >= 1
                Cells(i, 5).Font.Color = vbBlue
            Case Is >= 0.95
                Cells(i, 5).Font.Color = vbBlack
            Case Is >= 0.9
                Cells(i, 5).Font.Color = vbRed
            Case Else
                Cells(i, 5).Interior.Color = vbRed
                Cells(i, 5).Font.Color = vbBlack
        End Select
    Next
End Sub

 

簡単な説明

・「Cells(Rows.Count, 1).End(xlUp).row」は以前説明をしたのでこちらを御覧ください
・「Select Case Cells(i, 5)」は、IF〜ElseIf〜End文のようなものです。
・「Interior.Color」は、セルに塗りつぶしの色を設定する
・「Font.Color 」は、文字の色を設定する
・「vbBlue」等は、色指定です
ちなみに、「vbBlue」「vbWhite」「vbBlack」「vbRed」は何色?


あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

プログラミング依頼

目安時間:約 1分

VBAで「表示形式」を変更する

目安時間:約 5分

今回の表示形式の変更は、「日付」「金額」です。

その他にも、日付の分解をし、表示するやり方についてお伝えします。

【課題】
・金額を計算して、D列に入れて下さい。
・A列の日付を、yyyy/mm/dd形式にしてください。
・D列の金額を、カンマ編集にして下さい。
・A列の年月日を分解して、B列から列挿入しB列、C列、D列に年月日を追加する
・タイトルも列にも「年」「月」「日」を追加する

【VBA】

Sub Dispconv()
    Dim i As Long
    Dim row As Long
    Cells(1, 5) = " 年"
    Cells(1, 6) = " 月"
    Cells(1, 7) = " 日"
    row = Cells(Rows.Count, 1).End(xlUp).row
    '日付を、yyyy/mm/dd形式
    Columns(1).NumberFormatLocal = "yyyy/mm/dd"
    For i = 2 To row
        Cells(i, 4) = Cells(i, 2) * Cells(i, 3)
        Cells(i, 5) = Year(Cells(i, 1))
        Cells(i, 6) = Month(Cells(i, 1))
        Cells(i, 7) = Day(Cells(i, 1))
    Next
    '金額を、カンマ編集
    Columns(4).NumberFormatLocal = "#,##0"
     'セル範囲の外枠に罫線を引く
    Range(Cells(1, 5), Cells(row, 7)).BorderAround LineStyle:=xlContinuous
    'セル範囲に格子状に罫線を引く
    Range(Cells(1, 5), Cells(row, 7)).Borders.LineStyle = xlContinuous
End Sub

 

簡単な説明

・「Columns(1).NumberFormatLocal = "yyyy/mm/dd"」は日付列の表示形式を変更

・「Cells(i, 4) = Cells(i, 2) * Cells(i, 3)」は、金額を計算

・「Cells(i, 5) = Year(Cells(i, 1))」日付を分解して「年」を表示

・「Cells(i, 6) = Month(Cells(i, 1))」日付を分解して「月」を表示

・「Cells(i, 7) = Day(Cells(i, 1))」日付を分解して「日」を表示

・「Columns(4).NumberFormatLocal = "#,##0"」計算した金額に、カンマを追加する表示変更

・「Range(Cells(1, 5), Cells(row, 7)).BorderAround LineStyle:=xlContinuous」は、セル範囲の外枠に罫線を引く

・「Range(Cells(1, 5), Cells(row, 7)).Borders.LineStyle = xlContinuous」は、セル範囲に格子状に罫線を引く

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

VBAで「メッセージボックス(MsgBox)」を表示する

目安時間:約 3分

前回の「変数を使って合計を計算」のプログラミングにメッセージボックス(MsgBox)を追加して見ましょう

 

メッセージボックス(MsgBox)はマクロ終了等で、ユーザーに知らせる時に使ったりします

 

【課題】
・数量 * 単価を計算して、金額列に設定
・金額の合計と平均を計算し、メッセージボックス(MsgBox)に表示

【VBA】
ボタンを追加してVBAが実施出来るようにしました。

Sub messagebox()
Dim i As Long
Dim lngTotal As Long
Dim lngCnt As Long
lngTotal = 0
lngCnt = 0
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Cells(i, 4) = Cells(i, 2) * Cells(i, 3)
    lngTotal = lngTotal + Cells(i, 4)
    lngCnt = lngCnt + 1
Next
MsgBox "金額合計:" & lngTotal & vbLf & _
"金額平均:" & lngTotal / lngCnt, _
vbOKOnly, " 計算結果"
End Sub

 

簡単な説明
・「Dim i As Long」「Dim lngTotal As Long」「Dim lngCnt As Long」が変数です
・「Cells(Rows.Count, 1).End(xlUp).Row」は以前説明をしたのでこちらを御覧ください
・「Cells(i, 4) = Cells(i, 2) * Cells(i, 3)」は、金額の計算
・「lngTotal = lngTotal + Cells(i, 4)」は、各行の金額を足す
・「lngCnt = lngCnt + 1」は、金額平均を求めるためのカウント

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

VBAで「変数を使って合計を計算」する

目安時間:約 3分

プログラミングには、「変数」を必ず使用します。

 

簡単なプログラミングなら使わないかもしれませんけどね。

 

なので、変数の使い方は必ず覚えなければなりません。

 

変数が使えるようになると、プログラミングも組みやすくなりますよ。

 

では、変数を使うプログラミングの課題を出して勉強して行きましょう。

 

【課題】
・数量 * 単価を計算して、金額列に設定
・金額列の合計を計算し、最終行の22行目の金額列に設定

【VBA】
ボタンを追加してVBAが実施出来るようにしました。

Sub variable()
Dim i As Long
Dim lngTotal As Long
Dim lastRow As Long
lngTotal = 0
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow
    Cells(i, 4) = Cells(i, 2) * Cells(i, 3)
    lngTotal = lngTotal + Cells(i, 4)
Next
Cells(lastRow + 1, 4) = lngTotal
End Sub

 

簡単な説明
・「Dim i As Long」「Dim lngTotal As Long」「Dim lastRow As Long」が変数です
・「lastRow = Cells(Rows.Count, 1).End(xlUp).Row」は以前説明をしたのでこちらを御覧ください
・「Cells(i, 4) = Cells(i, 2) * Cells(i, 3)」は、金額の計算
・「lngTotal = lngTotal + Cells(i, 4)」は、各行の金額を足す
・「Cells(lastRow + 1, 4) = lngTotal」は、最終行の22行目の金額列に設定

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

Pythonの「ループ(for,while)文」を使って繰り返し処理をしよう

目安時間:約 6分

本日の勉強は、ループ文を使ったPythonプログラミングです。

 

前回は、「IF文」を使ったプログラミングでした。

 

Pythonのループには、2通りの方法があります。

1.for
2.while

 

この2通りの方法について、説明を致します。

 

sampleloop.py

# LOOP1
print('LOOP1 START')
prev = ""
for animal in ['cat', 'dog', 'tiger', 'lion', 'puma', 'horse']:
    print('val of animal :', animal)
    prev = prev + animal
    print(prev)
print('Here is out of for block')
print('LOOP1 END')
print('\n')

#LOOP2
print('LOOP2 START')
for i in range(1, 5):
    print('outside k-for')
    for k in range(i):
        print('inside k-for: i = ', i, ' k = ', k)
print('LOOP2 END')
print('\n')

#LOOP3
print('LOOP3 START')
loop = 1
val = input('input?(e/E): ')
while not(val == 'e' or val == 'E'):
    print('loop = ', loop)
    loop = loop + 1
    val = input('next input?(e/E): ')
print('while loop END')
print('LOOP3 END')
print('\n')

#LOOP4
print('LOOP4 START')
p = 1
w = 1
while(p > 0):
    print('ourside in-while')
    while(w < 5):
        print('inside in-while')
    print('inside while: p = ', p, ' w = ',w)
    w = w + 1
    p = p - 1
print('LOOP4 END')

 

実施結果
python sampleloop.py

LOOP1 START
val of animal : cat
cat
val of animal : dog
catdog
val of animal : tiger
catdogtiger
val of animal : lion
catdogtigerlion
val of animal : puma
catdogtigerlionpuma
val of animal : horse
catdogtigerlionpumahorse
Here is out of for block
LOOP1 END

LOOP2 START
outside k-for
inside k-for: i = 1 k = 0
outside k-for
inside k-for: i = 2 k = 0
inside k-for: i = 2 k = 1
outside k-for
inside k-for: i = 3 k = 0
inside k-for: i = 3 k = 1
inside k-for: i = 3 k = 2
outside k-for
inside k-for: i = 4 k = 0
inside k-for: i = 4 k = 1
inside k-for: i = 4 k = 2
inside k-for: i = 4 k = 3
LOOP2 END

LOOP3 START
input?(e/E): e
while loop END
LOOP3 END

LOOP4 START
ourside in-while
inside in-while
inside while: p = 1 w = 1
inside in-while
inside while: p = 1 w = 2
inside in-while
inside while: p = 1 w = 3
inside in-while
inside while: p = 1 w = 4
LOOP4 END

 

この様にループ文には特徴があり、どのような処理を行うかで選択してください。

 

この調子で、PHPRubyのループも勉強します。

 

50歳の私と一緒にプログラミングの勉強を始めませんか?

 

PHPの「ループ(for,foreach,while,do〜while)文」を使って繰り返し処理をしよう

目安時間:約 7分

本日の勉強は、ループ(for,foreach,while,do〜while)文を使ったPHPプログラミングです。

 

前回は、「IF文」を使ったプログラミングでした。

 

PHPのループには、4通りの方法があります。

1.for
2.foreach

3.while

4.do〜while

 

この4通りの方法について、説明を致します。

 

sampleloop.php

<?php
// LOOP1
echo "LOOP1 START<br>";
for ($i = 1; $i <= 10; $i++) {
    echo $i ;
    echo '<br>';
}
echo "LOOP1 END<br>";

// LOOP2
echo "LOOP2 START<br>";
$arr = array(1, 2, 3, 4);
foreach ($arr as &$val) {
    $val = $val * 2;
    echo $val ;
    echo '<br>';
}
echo "LOOP2 END<br>";

// LOOP3
echo "LOOP3 START<br>";
$arr1 = array(
"one" => 1,
"two" => 2,
"three" => 3,
"seventteen" => 17
);
foreach ($arr1 as $k => $v) {
    echo "\$arr1[$k] => $v<br>";
}
echo "LOOP3 END<br>";

// LOOP4
echo "LOOP4 START<br>";
$arr2 = array();
$arr2[0][0] = "a";
$arr2[0][1] = "b";
$arr2[1][0] = "y";
$arr2[1][1] = "z";
foreach ($arr2 as $v1) {
    foreach ($v1 as $v2) {
        echo "$v2<br>";
    }
}
echo "LOOP4 END<br>";

// LOOP5
echo "LOOP5 START<br>";
$count = 0;
while ($count <= 5) {
    if ($count > 3) {
        break;
    }
    echo $count."<br>";
    $count++;
}
echo "LOOP5 END<br>";

// LOOP6
echo "LOOP6 START<br>";
$num = 0;
do{
	print 'num = '.$num.'<br />';
	$num += 1;
}while ($num < 3);
echo "LOOP6 END<br>";

 

実施結果
http://localhost:8080/sampleloop.php

LOOP1 START
1
2
3
4
5
6
7
8
9
10
LOOP1 END
LOOP2 START
2
4
6
8
LOOP2 END
LOOP3 START
$arr1[one] => 1
$arr1[two] => 2
$arr1[three] => 3
$arr1[seventteen] => 17
LOOP3 END
LOOP4 START
a
b
y
z
LOOP4 END
LOOP5 START
0
1
2
3
LOOP5 END
LOOP6 START
num = 0
num = 1
num = 2
LOOP6 END

 

プログラミンを見てわかると思いますが、

「for,while,do〜while」の方はループする回数を明確にして、カウントをアップする必要があります。

「foreach」の方は設定している数分のみループし、カウントアップが必要ない。

「do〜while」の方は条件式が処理後にあるので必ず1回は処理を行う。

 

この様にループ文には特徴があり、どのような処理を行うかで選択してください。

 

ループ文で汎用的且つ、バグ(間違い)をなくすためにおすすめするのは「foreach」です。

 

随時、ループの回数が変わった場合、「for,while,do〜while」はループカウントを書き換えなければなりません。

 

しかし「foreach」は、設定している数分のみループするので書き換えが不要です。

 

なので、ループ回数が変わっても、書き換えが不要な「foreach」を使うことをおすすめします。

 

「foreach」の方法は、LOOP2〜LOOP4なので、参考になればと思います。

 

この調子で、RubyPythonのループも勉強します。

 

50歳の私と一緒にプログラミングの勉強を始めませんか?

 

VBAで「If〜ElseIf〜End」と「Select Case〜Case〜End Select」の違いのと使い方

目安時間:約 6分

プログラミングには、書き方は違うが同じ処理をする方法があります。

 

今回は、その一つとして
If〜ElseIf〜End」と「Select Case〜Case〜End Select」をお伝えします。

 

使い分けについては、処理の内容を考慮してどちらが良いかを考える必要がありますね

 

まずは、「If〜ElseIf〜End」のやり方について勉強したことを記載します。

 

If〜ElseIf〜End」の勉強の課題として下記の条件を設定しました。

 

【課題】
・昨年比(%)を計算して、それぞれの列に設定
・昨年比の数値により、記号を設定
A : 105%以上
B : 100%以上、105%未満
C : 95%以上、100%未満
D : 90%以上、95%未満
E : 90%未満
※昨年比 = 今年売上 ÷ 昨年売上

【VBA】
ボタンを追加してVBAが実施出来るようにしました。

Sub ElseIf()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Cells(i, 4) = Cells(i, 3) / Cells(i, 2)
    If Cells(i, 4) >= 1.05 Then
        Cells(i, 5) = "A"
    ElseIf Cells(i, 4) >= 1 Then
        Cells(i, 5) = "B"
    ElseIf Cells(i, 4) >= 0.95 Then
        Cells(i, 5) = "C"
    ElseIf Cells(i, 4) >= 0.9 Then
        Cells(i, 5) = "D"
    Else
        Cells(i, 5) = "E"
    End If
Next
End Sub

 

簡単な説明
・「Cells(Rows.Count, 1).End(xlUp).Row」については、「VBAで「最終行の取得」を使って見よう」を参照してください
・「Cells(i, 4) = Cells(i, 3) / Cells(i, 2)」は、昨年比の計算
・「If Cells(i, 4) >= 1.05 Then」は、昨年比が「A : 105%以上」の場合に、「Cells(i, 5) = "A"」で記号に設定
※以下同じ様に条件を比較して、記号を設定する

 

それではもう一つの「Select Case〜Case〜End Select」のやり方について勉強したことを記載します。

 

「Select Case〜Case〜End Select」の勉強の課題として下記の条件を設定しました。

 

【課題】
・昨年比(%)を計算して、それぞれの列に設定
・昨年比の数値により、記号を設定
A : 105%以上
B : 100%以上、105%未満
C : 95%以上、100%未満
D : 90%以上、95%未満
E : 90%未満
※昨年比 = 今年売上 ÷ 昨年売上

 

【VBA】
ボタンを追加してVBAが実施出来るようにしました。

※上記の画像と同じ結果となります

Sub Select()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Cells(i, 4) = Cells(i, 3) / Cells(i, 2)
    Select Case Cells(i, 4)
        Case Is >= 1.05
            Cells(i, 5) = "A"
        Case Is >= 1
            Cells(i, 5) = "B"
        Case Is >= 0.95
            Cells(i, 5) = "C"
        Case Is >= 0.9
            Cells(i, 5) = "D"
        Case Else
            Cells(i, 5) = "E"
    End Select
Next
End Sub

 

簡単な説明
・「Cells(Rows.Count, 1).End(xlUp).Row」については、「VBAで「最終行の取得」を使って見よう」を参照してください
・「Cells(i, 4) = Cells(i, 3) / Cells(i, 2)」は、昨年比の計算
・「Select Case Cells(i, 4)」は、昨年比見て、下記にあるどのCaseに該当するかを見て記号を設定

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

VBAで「IF文」を使って見よう

目安時間:約 3分

VBAで「IF文」を使うやり方について勉強したことを記載します。

 

「IF文」の勉強の課題として下記の条件を設定しました。

【課題】
・ケース数とバラ数を計算して、それぞれの列に記載
・1ケースに満たない場合は、D列のケース数に"無し"を記載

※ケース入数とは、1ケースに入る数量
※商品1なら、ケース数1、バラ数3となります

【VBA】
ボタンを追加してVBAが実施出来るようにしました。

 

Sub IF文()
Dim i As Long
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Cells(i, 4) = Int(Cells(i, 2) / Cells(i, 3))
    Cells(i, 5) = Cells(i, 2) - (Cells(i, 4) * Cells(i, 3))
    If Cells(i, 4) = 0 Then
        Cells(i, 4) = "無し"
    End If
NextEnd Sub

 

簡単な説明
・「Int(Cells(i, 2) / Cells(i, 3))」は、ケース数を算出、小数点以下は表示しない
・「Cells(i, 2) - (Cells(i, 4) * Cells(i, 3))」は、商品数 - (ケース入数 * ケース数)でバラ数を算出
・「If Cells(i, 4) = 0 Then」は、ケース数が0の場合は、「無し」を記載

 

あなたのお役に立てるなら、コピーして使用してください。

 

今後も勉強した内容を記載して行きますので、お役に立てるものがあれば使ってください。

 

VBA開発もしておりますので開発のご要望があればご連絡をください。

 

VBA開発依頼受付はこちらから

 

プロフィール

50歳、派遣社員。いつもいつも派遣切りにビクビクしながら生きています。50歳という大台を迎えると派遣先がほとんどなく、次の派遣先は無いに等しい。でも、家庭を支えなければならない。だから私は、複数の仕事が出来るように在宅ワークが出来るプログラミング、ブログを選択。50歳からフリーランスを目指してプログラミング、ブログを始めました。

私と一緒に始めませんか?

お問い合わせ
プログラミング依頼

 

最近の投稿
アーカイブ

ページの先頭へ