Option Explicit
'この位置に下各プロシージャに共通する変数をモジュールレベル変数として宣言しておりましたが
'個々のプロシージャ内で都度変数を宣言すべきとのご指導をいただき削除いたしました。
Sub control_all()
'各コメントの文頭にに----や…をつけいていましたが
'不要では?とのご指摘に削除して、文頭を揃えました。
delete_sheets '伝票フォーマットを全て削除 ← 元々はdenpyo_sakuseiに入れておりました。
A_retu_number 'mainのA列に№付け
sort_torihikisaki '取引先名称で並べ替え
denpyo_sakusei 'シート作成とデータ貼り付け
sort_number '№で並べ替え
End Sub
Sub delete_sheets() '伝票フォーマットを全て削除
Application.DisplayAlerts = False '警告解除
Dim Ws As Worksheet
For Each Ws In Worksheets
If Left(Ws.Name, 4) <> "main" Then
Ws.Delete
End If
Next
Application.DisplayAlerts = True '警告設定
End Sub
Sub denpyo_sakusei() 'シート作成とデータ貼り付け
'この行にdelete_sheetsを入れておりましたが、control_allに
'入れるべきと判断したため、移動しました。
Dim DSheet As Worksheet
Dim FSheet As Worksheet
Set DSheet = Worksheets("main")
Set FSheet = Worksheets("main1")
Dim Gyo As Long
Dim sGyo As Long 'sが先頭に来ると、ハンガリアン記法的には「データ型は文字列」という意味になりますね。 ogawa
Dim mxGyo As Long
Dim Masyo As String
Dim PSheet As Worksheet
mxGyo = DSheet.Range("B" & Rows.Count).End(xlUp).Row
Application.ScreenUpdating = False '画面更新停止
For Gyo = 2 To mxGyo
If Masyo <> DSheet.Range("B" & Gyo).Value Then
Masyo = DSheet.Range("B" & Gyo).Value
FSheet.Copy After:=DSheet
Worksheets("main1 (2)").Name = Masyo
Set PSheet = ActiveSheet
PSheet.Name = Masyo
sGyo = 16
End If
'↓以下3行は、 format関数を使うことも試してください ogawa
PSheet.Range("B" & sGyo).Value = Right(Year(DSheet.Range("C" & Gyo).Value), 2) '年
PSheet.Range("C" & sGyo).Value = Month(DSheet.Range("C" & Gyo).Value) '月
PSheet.Range("D" & sGyo).Value = Day(DSheet.Range("C" & Gyo).Value) '日
PSheet.Range("E" & sGyo).Value = DSheet.Range("D" & Gyo).Value '会計番号
PSheet.Range("F" & sGyo).Value = DSheet.Range("E" & Gyo).Value '伝票番号
PSheet.Range("H" & sGyo).Value = DSheet.Range("F" & Gyo).Value '取引詳細
If DSheet.Range("G" & Gyo).Value >= 0 Then
PSheet.Range("I" & sGyo).Value = DSheet.Range("G" & Gyo).Value '借方金額
Else
PSheet.Range("J" & sGyo).Value = DSheet.Range("G" & Gyo).Value '貸方金額
End If
If sGyo = 16 Then '残高計算
PSheet.Range("K" & sGyo).Value = DSheet.Range("G" & Gyo).Value
Else
PSheet.Range("K" & sGyo).Value = DSheet.Range("G" & Gyo).Value _
+ DSheet.Range("G" & Gyo).Offset(-1).Value
End If
PSheet.Range("F2").Value = PSheet.Name & " 実績" '実績タイトル
sGyo = sGyo + 1
Next
lines_setting '罫線を引く ←これでも悪くはないですが、罫線を引くタイミングを、「各シートでの処理が終わり、次のシートでの処理を開始する直前」にしてやってみましょう。 ogawa
Application.ScreenUpdating = True '画面更新設定
DSheet.Activate
End Sub
Sub A_retu_number() 'mainのA列にNo.付け
Dim DSheet As Worksheet
Set DSheet = Worksheets("main")
'№欄設定
DSheet.Range("A1").Value = "No."
DSheet.Range("A1").Interior.ColorIndex = 35
DSheet.Range("A1").HorizontalAlignment = xlCenter
DSheet.Range("A1").Font.Bold = True
'№付け
'↓autofillを使った入力方法も調べて実装してみてください。 ogawa
Dim Gyo As Long
Dim mxGyo As Long
mxGyo = DSheet.Range("B" & Rows.Count).End(xlUp).Row
For Gyo = 2 To mxGyo
If Gyo = 2 Then
DSheet.Range("A" & Gyo).Value = "1"
Else
DSheet.Range("A" & Gyo).Value = DSheet.Range("A" & Gyo).Offset(-1).Value + 1
End If
Next
End Sub
Sub sort_torihikisaki() '取引先名称で並べ替え
Dim DSheet As Worksheet
Set DSheet = Worksheets("main")
Dim mxGyo As Long
mxGyo = DSheet.Range("B" & Rows.Count).End(xlUp).Row
DSheet.Range("A1:G" & mxGyo).Sort _
Key1:=DSheet.Range("B1"), _
Order1:=xlAscending, _
Header:=xlYes
End Sub
Sub sort_number() 'No.で並べ替え
Dim DSheet As Worksheet
Set DSheet = Worksheets("main")
Dim mxGyo As Long
mxGyo = DSheet.Range("B" & Rows.Count).End(xlUp).Row
DSheet.Range("A1:G" & mxGyo).Sort _
Key1:=DSheet.Range("A1"), _
Order1:=xlAscending, _
Header:=xlYes
End Sub
Sub lines_setting() '罫線を引く
'データの件数分だけ罫線を引く作業するというのは非効率です…とのご指摘を受けて
'denpyo_sakusei内のfor~next構文の中に入れていたのを、シート単位で
'罫線作成するように、lines_settingを追加しました。
Dim Ws As Worksheet
Dim mxGyo As Long
For Each Ws In Worksheets
If Left(Ws.Name, 4) <> "main" Then
Ws.Activate
mxGyo = Range("B" & Rows.Count).End(xlUp).Row
Range("B" & 16 & ":K" & mxGyo + 1).Borders.LineStyle = True '罫線を引く
End If
Next
End Sub
受講生さんの投稿
(投稿ID: 3852) 添付ファイルのダウンロード権限がありません
ご査収下さい。
小川慶一さんのコメント
(コメントID: 5378)
ざっと拝見しました。
前回ご返送した第9回の回答9856の方を先に解決しましょう。
https://forum.pc5bai.com/lesson/page/244
ご返送した前作の内容をどの程度理解したのか?添削の中で僕が指摘したことをあえて外すのならばそれはなぜなのか?
他にどんなやり方があるかといったことについてどの程度検討したのか?といったところについてわからないと、コメントしようがありません。
よく似た課題を出しているのは、一度しっかり添削を受けてその内容と比較した上で再度この課題にイチから着手して欲しいからです。
受講生さんにとって一番力になる方法でアドバイスしたいと思っています。
よろしくお願いします。
> 第11回セミナーの宿題を提出いたします。
> ご査収下さい。
受講生さんのコメント
(コメントID: 5385) 添付ファイルのダウンロード権限がありません
GW中のまとまった時間がとれる間に、極力セミナーを進行させたく、少々勇み足でした。
第9回でご指導いただきました内容で修正し、どのように修正したのか、コメントをつけて提出いたします。
> 受講生 さん:
>
> ざっと拝見しました。
>
> 前回ご返送した第9回の回答9856の方を先に解決しましょう。
> https://forum.pc5bai.com/lesson/page/244
>
> ご返送した前作の内容をどの程度理解したのか?添削の中で僕が指摘したことをあえて外すのならばそれはなぜなのか?
> 他にどんなやり方があるかといったことについてどの程度検討したのか?といったところについてわからないと、コメントしようがありません。
>
> よく似た課題を出しているのは、一度しっかり添削を受けてその内容と比較した上で再度この課題にイチから着手して欲しいからです。
> 受講生さんにとって一番力になる方法でアドバイスしたいと思っています。
>
> よろしくお願いします。
>
> > 第11回セミナーの宿題を提出いたします。
> > ご査収下さい。
小川慶一さんのコメント
(コメントID: 5386)
こんにちは。
以下に添削したファイルを置きました。
https://www.dropbox.com/sh/eagelyr9zvp7ybi/AAC2iQw77K1fHRP5aGvtOhjWa?dl=0
comment_soft1.JPG, chuban.JPG のコメントの非整列ぶりが気になります。
たとえば、 comment_soft1.JPG は、 comment_soft2.JPG の下の方のサンプルのように、揃え方ほうが可読性が増します。
VBEのフォントは等幅フォントを使いましょう。たとえば、MSゴシック等。
ひきつづき、よい休日を (^^)/~
> 小川慶一さん:
> GW中のまとまった時間がとれる間に、極力セミナーを進行させたく、少々勇み足でした。
> 第9回でご指導いただきました内容で修正し、どのように修正したのか、コメントをつけて提出いたします。
>
> > 受講生 さん:
> >
> > ざっと拝見しました。
> >
> > 前回ご返送した第9回の回答9856の方を先に解決しましょう。
> > https://forum.pc5bai.com/lesson/page/244
> >
> > ご返送した前作の内容をどの程度理解したのか?添削の中で僕が指摘したことをあえて外すのならばそれはなぜなのか?
> > 他にどんなやり方があるかといったことについてどの程度検討したのか?といったところについてわからないと、コメントしようがありません。
> >
> > よく似た課題を出しているのは、一度しっかり添削を受けてその内容と比較した上で再度この課題にイチから着手して欲しいからです。
> > 受講生さんにとって一番力になる方法でアドバイスしたいと思っています。
> >
> > よろしくお願いします。
> >
> > > 第11回セミナーの宿題を提出いたします。
> > > ご査収下さい。
受講生さんのコメント
(コメントID: 5401)
コメントずれの原因は、当方のフォントがMeiryo UIを使用しているからだと思われます。
好みの問題かもしれませんが、Windows7の標準フォントで、当方が勤務する会社でも、Office文書やメールで多くの社員が好んで使っております。
それだけ、見やすいと指示されているからだと考えます。
MSゴシックなどの等幅フォントは、Meiryo UIと比較すると、どうもしても見にくくで好きになれません。
確かにデメリットはあります。
横に長いマクロのプログラムになると、カーソルの位置と文字の位置がズレて合わなくなります。
しかしながら、そのデメリットを差し置いても、見やすさ(好み)優先でMeiryo UIを使用している次第です。
この件に関しましては、どうぞご勘弁いただきたく存じます。
> 受講生 さん:
>
> こんにちは。
>
> 以下に添削したファイルを置きました。
> https://www.dropbox.com/sh/eagelyr9zvp7ybi/AAC2iQw77K1fHRP5aGvtOhjWa?dl=0
>
> comment_soft1.JPG, chuban.JPG のコメントの非整列ぶりが気になります。
> たとえば、 comment_soft1.JPG は、 comment_soft2.JPG の下の方のサンプルのように、揃え方ほうが可読性が増します。
> VBEのフォントは等幅フォントを使いましょう。たとえば、MSゴシック等。
>
> ひきつづき、よい休日を (^^)/~
>
>
>
>
> > 小川慶一さん:
> > GW中のまとまった時間がとれる間に、極力セミナーを進行させたく、少々勇み足でした。
> > 第9回でご指導いただきました内容で修正し、どのように修正したのか、コメントをつけて提出いたします。
> >
> > > 受講生 さん:
> > >
> > > ざっと拝見しました。
> > >
> > > 前回ご返送した第9回の回答9856の方を先に解決しましょう。
> > > https://forum.pc5bai.com/lesson/page/244
> > >
> > > ご返送した前作の内容をどの程度理解したのか?添削の中で僕が指摘したことをあえて外すのならばそれはなぜなのか?
> > > 他にどんなやり方があるかといったことについてどの程度検討したのか?といったところについてわからないと、コメントしようがありません。
> > >
> > > よく似た課題を出しているのは、一度しっかり添削を受けてその内容と比較した上で再度この課題にイチから着手して欲しいからです。
> > > 受講生さんにとって一番力になる方法でアドバイスしたいと思っています。
> > >
> > > よろしくお願いします。
> > >
> > > > 第11回セミナーの宿題を提出いたします。
> > > > ご査収下さい。
小川慶一さんのコメント
(コメントID: 5404)
> コメントずれの原因は、当方のフォントがMeiryo UIを使用しているからだと思われます。
> しかしながら、そのデメリットを差し置いても、見やすさ(好み)優先でMeiryo UIを使用している次第です。
僕としては、等幅フォントを使っていただきたいですね…。
というのは、等幅フォントだと、「形の認識」がより容易だからです。
「見やすさ」の定義が、僕と違うかもしれません。
「見やすさ」を決める要素にもいろいろあります。
そのうち、以下では、「形の認識」に注目してみたいと思います。
以下の比較図を見てみてください。
左側のものと右側のものでは、Visual Basic Editorにコードを表示するときに使っているフォントが異なります。
https://www.dropbox.com/s/jsu3vvrmh2ewhac/font_hikaku.JPG?dl=0
左側は等幅フォントです。MS 明朝 (日本語)です。
右側は等幅フォントではありません。MS P明朝 (日本語)です。
プログラム内の青でくくった部分(上と下)を見てみてください。
同じ文字数という「韻を踏んだ形」で表現したものがどう表示されているか?というと、左側の等幅フォントのものでは同じ形状で表現されていますが、右側のものでは形が崩れていますね。
左側の状態であれば、右側の状態のときに比べて、何か問題があったときのテストに手間がかかりません。
左側の状態であれば、同じような形状のプログラムが連続するところについては、パッと形を見ただけで、うまく書けているかどうか?ということを判定できます。
一方、右側の状態だと、各行を個別にしっかり読まないと、このブロック内の各行がきちんとをかけているか?ということを確認できません。
この差は、蓄積すると、テストにかかる負荷をかなり変えます。
確かに、「文字の認識」という意味ではプログラミング用に好適な等幅フォントよりも良いものもあるかもしれません。
初心者の頃であれば、一行一行のプログラムの中身をしっかり書く能力が不足しているので各行の読みやすさが重視されるかもしれません。
「全体の構造に意識を向けつつコードを書く」といったことが要求される規模のプログラムは書きませんし、そういう意味でも、こういう視点は不要だったかもしれません。
しかし、プログラミング中上級者にとって大切なのは、全体の形に対するパターン認識のしやすさです。
「形の認識」か?「文字の認識」か?ということであれば、「形の認識」がより容易な等幅フォントの方が優れているかと僕は思います。