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歳の私と一緒にプログラミングの勉強を始めませんか?

 

Rubyの「ループ(for,while,until,each,each doなど)文」を使って繰り返し処理をしよう

目安時間:約 7分

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

 

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

 

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

1.for
2.while
3.until
4.each
5.each do
6.times do
7.upto(5) do
8.downto(1) do
9.loop do

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

 

sampleloop.rb

#LOOP1
print("LOOP1 START\n")
for i in 1..3 do
    print("i = ", i, "\n")
end
print("LOOP1 END\n\n")

#LOOP2
print("LOOP2 START\n")
strs =["a", "b", "c"]
for str in strs
    puts str
end
print("LOOP2 END\n\n")

#LOOP3
print("LOOP3 START\n")
fruits = {:apple => "アップル", :orange => "オレンジ", :grape => "グレープ"}
for key, value in fruits
    puts "KEY:#{key} VALUE:#{value}"
end
print("LOOP3 END\n\n")

#LOOP4
print("LOOP4 START\n")
num = 0
while num < 2 do
    print("num = ", num, "\n")
    num = num + 1
end
print("LOOP4 END\n\n")

#LOOP5
print("LOOP5 START\n")
num = 2
until num <= 0 do
    print("num = ", num, "\n")
    num = num - 1
end
print("LOOP5 END\n\n")

#LOOP6
print("LOOP6 START\n")
range = 5..10
range.each{|num|
    print("num = ", num, "\n")
}
print("LOOP6 END\n\n")

#LOOP7
print("LOOP7 START\n")
range = "Ax".."Bb"
range.each do |str|
    print("str = ", str, "\n")
end
print("LOOP7 END\n\n")

#LOOP8
print("LOOP8 START\n")
5.times do |i|
    puts "#{i}回目"
end
print("LOOP8 END\n\n")

#LOOP9
print("LOOP9 START\n")
1.upto(5) do |i|
    puts "#{i}回目"
end
print("LOOP9 END\n\n")

#LOOP10
print("LOOP10 START\n")
5.downto(1) do |i|
    puts "#{i}回目"
end
print("LOOP10 END\n\n")

#LOOP11
print("LOOP11 START\n")
i = 0
loop do
    i += 1
    puts "アイウエオ"
    if i == 5
        break
    end
end
print("LOOP11 END\n")

 

実施結果
ruby sampleloop.rb

LOOP1 START
i = 1
i = 2
i = 3
LOOP1 END

LOOP2 START
a
b
c
LOOP2 END

LOOP3 START
KEY:apple VALUE:アップル
KEY:orange VALUE:オレンジ
KEY:grape VALUE:グレープ
LOOP3 END

LOOP4 START
num = 0
num = 1
LOOP4 END

LOOP5 START
num = 2
num = 1
LOOP5 END

LOOP6 START
num = 5
num = 6
num = 7
num = 8
num = 9
num = 10
LOOP6 END

LOOP7 START
str = Ax
str = Ay
str = Az
str = Ba
str = Bb
LOOP7 END

LOOP8 START
0回目
1回目
2回目
3回目
4回目
LOOP8 END

LOOP9 START
1回目
2回目
3回目
4回目
5回目
LOOP9 END

LOOP10 START
5回目
4回目
3回目
2回目
1回目
LOOP10 END

LOOP11 START
アイウエオ
アイウエオ
アイウエオ
アイウエオ
アイウエオ
LOOP11 END

 

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

 

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

 

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

 

タグ:    

カテゴリ:programming ruby  [コメント:0]

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文」を使って見よう

目安時間:約 2分

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開発依頼受付はこちらから

VBAで「掛け算(2重ループ)」を使って見よう

目安時間:約 2分

縦、横の数字を掛け合わせるやり方について勉強したことを記載します。
「掛け算(2重ループ)」の勉強の課題として下記の条件を設定しました。
【課題】
縦、横の数字を掛け合わせ記載する

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

Sub 掛け算()
Dim a As Long
Dim b As Long
For a = 2 To 11
    For b = 2 To 11
        Cells(a, b) = Cells(a, 1) * Cells(1, b)
    Next
Next
End Sub


簡単な説明
・「For」ループ範囲は、縦、横共に2〜11になる
・「Cells(a, 1)」は、行
・「Cells(1, b)」は、列
・「Cells(a, b)」は、掛け算の結果

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

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

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

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

VBAで「最終行の取得」を使って見よう

目安時間:約 2分

行数は随時変化するので、VBAで最終行を取得し、ループする範囲を設定するやり方について勉強したことを記載します。
「最終行の取得」の勉強の課題として下記の条件を設定しました。
【課題】
金額を計算して、D列に設定
※金額 = 商品数 × 単価

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

Sub 金額()
Dim k As Long
For k = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Cells(k, 4) = Cells(k, 2) * Cells(k, 3)
Next
End Sub


簡単な説明
・「Cells(Rows.Count, 1).End(xlUp).Row」は、最終行の取得するのでこの場合は、「21」になる
・「For」ループ範囲は、2〜21になる
・「Cells(k, 2)」は、商品数行
・「Cells(k, 3)」は、単価行
・「Cells(k, 4)」は、金額行

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

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

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

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

VBAで「For~Next」を使って見よう

目安時間:約 2分

VBAで「For~Next」のやり方について勉強したことを記載します。
「For~Next」の勉強の課題として下記の条件を設定しました。
【課題】
販売単価を計算して、D列に設定
※販売単価 = 売上 ÷ 販売数

【VBA】
「販売単価」ボタンを追加してVBAが実施出来るようにしました。

Sub 販売単価()
Dim t As Long
For t = 2 To 11
    Cells(t, 4) = Cells(t, 2) / Cells(t, 3)
Next
End Sub


簡単な説明
・「For t = 2 To 11」は、2行目〜11行目を繰り返す
・「Cells(t, 2)」は、売上行
・「Cells(t, 3)」は、販売数行
・「Cells(t, 4)」は、販売単価行

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

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

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

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

プロフィール

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

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

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

 

最近の投稿
アーカイブ

ページの先頭へ