オンライン講座 質問と回答

無料・有料のオンライン講座で寄せられたメッセージの一部を紹介致します。

[11591]発展編1 フォローメールセミナー 第18回

2019-09-13 18:34:48 ゲストさんからの投稿です。

小川先生

今まで指示語のような意味合いでしかselectionを捉えていなかったので、自動記録で作ったマクロを修正するときに、例えば、

range(“A2:A30”).select
with selection.~

のselectionを消してしまい、渋々また元に戻してみたり、何となくwith range(“A2:A29”).~ としてみたりを繰り返していました。Excelシート上で選択されたセル範囲を意味することを今回知ったことで、理解が深まりました(分からないと思った時点で、自分で調べておく必要があったのですが、やり過ごしてしまいました…)
実は現在転職活動中で、一つでも武器になるものを習得したいと思い、この講座を始めましたが、すぐに実践で使う機会もなかった為、学習の目的のきはくになりつつあり、最近は講座の進み具合も遅れがちでした。先生の「楽して結果を出したいから」いう考えにハッとしました。その為の準備だと思って、楽しみながら学んでいきたいです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11587]人工知能添削動画その5

2019-09-05 21:59:15 浦山大さんからの投稿です。

小川先生
浦山です。こちらの【動画11】と、次の【動画12】が、両方とも「m005 Comment(小川先生の解説動画)になっているようです(書いている動画が見当たらず…)。

一度、ご確認頂ければと思います(^^)

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11586]発展1講座第4章 – Select Case 複数条件の並べ方

2019-09-05 06:55:37 グミオさんからの投稿です。

共有フォルダの階層名をExcelなどに書き出すVBAはありますか。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11581]発展1講座第1章 – 総称オブジェクト型

2019-08-29 18:29:05 受講生さんからの投稿です。

先生、ご返信ありがとうございました。
左の出力値に右表の変数の値を入れて、左表の行数分ループすることだと思います。

すみませんが、演習問題のアドレスの添付ではなく、
演習問題が入っているフォルダ名を教えて下さい。
ウェブ内の説明をどこを見ても演習問題の場所が明記されていません。よろしくお願い申し上げます。

[ 続きを読む ]  返信件数:4件  [ 動画を見る] 

[11566]ガントチャート作成の前処理、後処理を実装する

2019-08-27 16:30:01 ゲストさんからの投稿です。

小川先生
体系だつたガントチャートの解説感謝申しあげます。印刷企業の案件の計画管理にガントチャートを利用することを考えています。週に200件以上の案件があり、前工程印刷は機械ですが、製本は人手になります。必然的に手待ち、アイドルが発生し成り行き管理となります。製本工程にガントチャートを週次で適用しようと発想いたしました。①案件を4パータンに仕分けしてガントチャートを作成しますが、1パターンのケースですが、f8で逐次流すと走れますが、f5で処理すると型が会わないというエラーがでます②イベント間がグリーンになりません。③注記は製本仕様の欄に致しました。このような一過性の案件の場合のCatlistの定義の仕方についてもご教示いただけましたら幸いです。  本来のジョブ型ガントチャートから逸脱していますが、なんとかして予定の見える化をしたいと考えています。 宜しくお願い致します。  江口

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[11563]発展1講座第1章 – 総称オブジェクト型

2019-08-24 14:33:22 あおちゃんさんからの投稿です。

オブジェクト変数がやっとわかりました。このハードルが高くて、今迄さっぱりわかりませんでした。
ありがとうございます????

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11562]発展1講座イントロダクション – 使用するファイル、PDFの確認

2019-08-23 18:49:39 あおちゃんさんからの投稿です。

小川先生の説明は本当にわかりやすいです。ありがとうございます????

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11558]複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?

2019-08-17 19:07:53 田中 宏明さんからの投稿です。

ショートカットキーによるやり直し
 Alt→E→R
無意識に使えるよう練習します。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11552]書式設定の活用方法、書式設定が原因で起こりうる問題とその対処法

2019-08-13 10:52:49 受講生さんからの投稿です。

貴重な無料のエクセル授業誠にありがとうございます。

夏休みを使って、動画1~5まで一気に学習をしましたが、理解をしてエクセルで練習をしてとかなり頭が疲れました。

エクセルの練習をもっと積む必要があるのだとようやく自覚した次第です。

まだまだマクロまで遠い感じです。無料動画を何遍も拝聴致します。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11545]補講:複数ファイル間でのデータ転記

2019-08-07 20:35:58 あおちゃんさんからの投稿です。

この動画は大変有り難いです。いつも、このファイル間の動作で躓き、ボロボロになります。
ありがとうございます????!

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[11544]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す

2019-08-07 10:28:10 ゲストさんからの投稿です。

小川先生
こんにちは。フォローアップ・ベーシックを2回復習し、ようやくアドバンスに来ています。以下自力で作成しました(問題5を投稿)。成功したときは嬉しくて思わず声を出してしまいました。先生の模範解答とは方向性がだいぶ異なりますが、記念に投稿させて下さい。これからもよろしくお願いします。

 Sub mondai5()
    Dim migi
    Dim kugiri '、の出現回数
    Dim n
    Dim mae
    Dim ato
    Dim moji
    moji = Range("D2").Value
    kugiri = Len(moji) \ 7
    migi = 2
    For n = 0 To kugiri
        mae = 7 * n
        ato = 7 + 7 * n
        Range("L" & migi).Value = Mid(moji, mae + 1, ato - mae - 1)
        migi = migi + 1
    Next
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11543]補講:複数ファイル間でのデータ転記

2019-08-07 00:26:14 morimotoさんからの投稿です。

現在発展編1途中でstop中(12月に資格試験を控えそちらに
時間を取られているため。IT等試験ではありません)しかし
会社では適時CODE作ったりしており、フォームまで興味
本位を兼ねてガチガチやってます。しかしほんとこの基礎編知識で浅いフォームですが作成できるとは思いもしませんでした。とりあえずは要求通り動いてくれてますからね。  試験が済んで早く本格的に学習を再開したいところです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11542]基礎講座第4章5 – 「ハナコのステップ」のふりかえり

2019-08-07 00:02:34 morimotoさんからの投稿です。

会社で使っているマクロに不具合が出て、システム部に
連絡して遠隔操作でコードの手直しを依頼しました。
遠隔操作なので勝手に画面が動いているのですが、まさかまさかのハナコステップでコードをどんどん書いていっていたので実務の方も実践されているんだなと感心しました。・・・もしやその人もこの講座で学習していたのかもしれません。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11536]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を反映しつつデータ転記する

2019-08-01 12:50:58 ほとさんからの投稿です。

3回から5回の動画講座がなんとか理解できました。
最初、課題を自力で解決できず動画をみました。その中で小川先生に叱咤激励を受けて、ベーシックでできたことがなぜ今回の課題ではうまくできなかったのかを再度比較、整理しました。そして、ちょっと考え方を工夫さえできれば確かにこの課題もクリアできるはずだと気づきました。
その結果、3回と4回の総まとめである第5回の課題のマクロを分割することなく一度にかけることができました。
物凄い達成感です。引き続き、いろいろなパターンを経験して経験値をふやしていきたいと思います。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11531]発展1講座第1章 – 固有オブジェクト型

2019-07-29 13:59:09 受講生さんからの投稿です。

図形を扱うことは、あまりないのですが、参考に教えてください。
Dim zukei as Shape
zukei = [ ]
[ ] の中は、どのような記載となるのでしょうか。

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

[11529]表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

2019-07-27 17:11:23 ほとさんからの投稿です。

フォローアップアドバンスドでつっかかったので、ベーシックが本当にすらすらできるか不安になり、再復習しました。
結果、3度復習したことになりましたが、マクロが思ったような動きにならない場合でも慌てずに修正できるようになり、ベーシックレベルの変数の考え方・使い方は完全に整理できたと思います。最初のころを考えると信じられません。
また3度目の復習ではなんとかベーシックのマクロを2時間程度で組めるようになりました。再度、アドバンスドにチャレンジします。

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

[11526]エクセルマクロの全体像

2019-07-24 22:06:19 受講生さんからの投稿です。

マクロって、一つ一つの作業を記録する物
と理解していたのが、違ったと言うことが分かりました。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11524]ORDER BYの紹介

2019-07-23 08:33:50 受講生さんからの投稿です。

SQL を利用したデータベース利用がここまで強力とは驚きました。
今の私は、魔法使いが最強の呪文を覚えたときと同じ心境です。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11518]キーボード上での手の置き方

2019-07-19 20:48:14 受講生さんからの投稿です。

貴重な講座をありがとうございます。
テンキーが右についているキーボードを使用する場合でも、数字の入力はキーボード上部横一列のキーで入力した方がよいでしょうか。
小川先生のおすすめをうかがえればと存じます。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11512]簡単なマクロを書いてみる – プログラムの読み方

2019-07-18 16:17:18 受講生さんからの投稿です。

お世話になっております。

動画とおりやってマクロを書いてみましたが、

Worksheets(“sheet3”).Range(“b8”).Value = 22353
と入力したら、

実行時エラー“9”
インデックスが有効範囲にありません。

と言われ、操作が継続できません。

シート数は6まであります。

お忙しいところ恐れ入りますが、ご教示いただけますと幸いです。

よろしくお願いします。

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[11511]サポートの目的と方法について

2019-07-18 14:46:33 ゲストさんからの投稿です。

こんにちは
私もワークの報告をさせて頂きたく、メールを頂けますでしょうか。
宜しくお願いします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11509]エクセルでのワークその2

2019-07-17 19:44:42 ゲストさんからの投稿です。

先生こんにちは
ctrlキーについて質問があります。
ctrlキーを右・左どちらで使うかを試行錯誤しながらワークをやっています。
実は元々「C」のキーを中指で押す習慣がなかったこともあり(人差し指でした)、ctrl+CのCがctrlキーと同時に押すと、かなり指が張った感じになります。
また保存のctrl+Sで、同時にSを薬指で押すのも、体を右側にひねるか手首を九の字に曲げないと難しいです。
HPのノートパソコンを使っているので、右側のctrlで対処しようとしていますが、他のパソコンだと、右側にctrlキーが無いものも結構あるようなので、ctrlキーは左指で頑張って練習した方がいいのかを伺いたいです。またctrl+Sのような場合でも必ず決まった指で使った方がいいのかも教えて頂ければ幸いです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11507]発展1講座第5章 – モジュールレベル変数 アクセシビリティ設定

2019-07-16 12:18:31 ほとさんからの投稿です。

6章のテキストを拝読しました。

こちらで出てくる
6.3様々なオブジェクト・プロパティ・メソッド
6.5知っておきたい便利関数
等は、プログラミングする際に無条件に使える位のレベルまで覚えておくべきものでしょうか。内容は理解できるのですが、自分がプログラミングする際引き出しとして利用できるかといった観点からはまだ到達できていないというのが正直なところです。
少し曖昧な質問になってしましましたが、到達度という観点での目標点を
お教えいただければと思います。

よろしくお願いします。

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[11495]出現回数を数える。CountIf関数がやっていることをマクロで書くと?

2019-07-07 14:26:00 ほとさんからの投稿です。

小川先生

こんにちわ
先生の講義はわかりやくすてすらすら頭に入ってきます。
この調子で進めていきたいと思います。

[2]の回答を復習したとき、最後のfor next構文でお団子のとる範囲を間違えて最後の行を取りこぼしてしまいました。
間違いだということはすぐ理解できたのですが、
その時のマクロの実行結果が私の推測と違っていたので、質問させていただきました。私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。

復習で書いたマクロは以下のものとなります。
Sub countif_3()
Dim goukei

Dim gyo2
For gyo2 = 4 To 6
goukei = 0
Dim gyo
For gyo = 4 To 18
If Range(“c” & gyo).Value = Range(“e” & gyo2).Value Then
goukei = goukei + 1
End If
Next


Next
Range(“f” & gyo2) = goukei

End Sub

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

[11491]発展編1 フォローメールセミナー 第11回

2019-07-01 14:38:26 小川慶一さんからの投稿です。

受講生の方から、添削依頼を受けました。
以下のものです。

Option Explicit
Dim wFm As Worksheet
Dim Ireru As String
Dim Mx As Long

Public Sub WsDelete()
    Dim wd As Worksheet
    Application.DisplayAlerts = False
    For Each wd In Worksheets
        If Left(wd.Name, 4) <> "main" Then
            wd.Delete
        End If
    Next
    Application.DisplayAlerts = True
End Sub

Private Sub Bangou()
    wFm.Range("A2").FormulaR1C1 = "1"
    wFm.Range("A2:A317").DataSeries Rowcol:=xlColumns, _
    Type:=xlLinear, Date:=xlDay, _
    Step:=1, Trend:=False
End Sub

Private Sub Narabe()
    wFm.Sort.SortFields.Clear
    wFm.Sort.SortFields.Add Key:=wFm.Range(Ireru), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wFm.Sort
        .SetRange wFm.Range("A1:" & "G" & wFm.Range("G65536").End(xlUp).Row)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
Private Sub Keisen()
    Mx = Range("K65536").End(xlUp).Row
    With Range("B16:K" & Mx)
        .Borders(xlDiagonalUp).LineStyle = xlNone
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).Weight = xlThin
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = xlHairline
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = xlHairline
    End With
End Sub
Private Sub P_hani()
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    ActiveWindow.View = xlNormalView
End Sub

Private Sub Daimei()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup

        .CenterHeader = "&F"


        .CenterFooter = "&P / &N ページ"

        .LeftMargin = Application.InchesToPoints(0.748031496062992)
        .RightMargin = Application.InchesToPoints(0.748031496062992)
        .TopMargin = Application.InchesToPoints(0.984251968503937)
        .BottomMargin = Application.InchesToPoints(0.984251968503937)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
            End With
    Application.PrintCommunication = True
    
End Sub
Private Sub Tyousei()
    Keisen
    Daimei
    P_hani
    
End Sub

Public Sub Denpyo()
    Application.ScreenUpdating = False
    Dim wTo As Worksheet
    Dim lnMoto As Long
    Dim lnSaki As Long
    Dim dHiduke As Date
    
    Set wFm = Worksheets("main")
    WsDelete
    wFm.Activate
    Bangou
    Ireru = "B2:" & "B" & wFm.Range("B65536").End(xlUp).Row
    Narabe
       
    For lnMoto = 2 To wFm.Range("B65536").End(xlUp).Row
        If wFm.Range("B" & lnMoto).Value <> wFm.Range("B" & lnMoto - 1).Value Then
            
            If lnMoto > 2 Then
                Tyousei
            End If
            
            lnSaki = 16
            Sheets("main1").Copy After:=Sheets(2)
            Set wTo = Worksheets(3)
            wTo.Name = wFm.Range("B" & lnMoto).Value
        End If
        dHiduke = wFm.Range("C" & lnMoto).Value
        wTo.Range("B" & lnSaki).Value = Left(Year(dHiduke), 2)
        wTo.Range("C" & lnSaki).Value = Month(dHiduke)
        wTo.Range("D" & lnSaki).Value = Day(dHiduke)
        wTo.Range("E" & lnSaki).Value = wFm.Range("D" & lnMoto).Value
        wTo.Range("F" & lnSaki).Value = wFm.Range("E" & lnMoto).Value
        wTo.Range("H" & lnSaki).Value = wFm.Range("F" & lnMoto).Value
        If wFm.Range("G" & lnMoto).Value > 0 Then
            wTo.Range("I" & lnSaki).Value = wFm.Range("G" & lnMoto).Value
        Else
            wTo.Range("J" & lnSaki).Value = wFm.Range("G" & lnMoto).Value
        End If
        If lnMoto > 2 Then
            wTo.Range("K" & lnSaki).Value = wFm.Range("G" & lnMoto).Value + wTo.Range("K" & lnSaki - 1).Value
        Else
            wTo.Range("K" & lnSaki).Value = wFm.Range("G" & lnMoto).Value
        End If
        lnSaki = lnSaki + 1
    Next
    
    Tyousei
    
    Ireru = "A2:" & "A" & wFm.Range("A65536").End(xlUp).Row
    Narabe
    
    wFm.Range("A2:" & "A" & wFm.Range("A65536").End(xlUp).Row).ClearContents
    wFm.Activate
    Application.ScreenUpdating = True
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11483]発展1講座第3章 – マクロの自動記録 並べ替え

2019-06-27 16:31:43 ゲストさんからの投稿です。

2003年と2007年のバージョンで並び替えの自動記録を行うとマクロの構文も違ってくることが勉強できました。
私は2007年で自動記録をしたのですが、2007では、並べ替えの設定と並べ替えの実行で処理が別れていることを学びました。
2003よりもより丁寧な記述が行えると思いました。

やはり、小川先生の仰るように長い1文に直してからちぎるやり方でやったので理解が早かったです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11477]エクセルマクロの全体像

2019-06-26 02:45:45 ゲストさんからの投稿です。

まだ何が出来るかわからないですが、業務効率化と自身のスキルアップを目指して頑張ります。IT用語が全く分からないので不安ですが。。。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11474]発展編1 フォローメールセミナー 第11回

2019-06-24 13:55:59 小川慶一さんからの投稿です。

とある受講生の方から、添削依頼をいただきました。
以下に添削を示します。

まずは、いただいたコード。

Option Explicit
Dim wFm As Worksheet
Dim Ireru As String
Dim Mx As Long

Sub WsDelete()
    Dim wd As Worksheet
    Application.DisplayAlerts = False
    For Each wd In Worksheets
        If Left(wd.Name, 4) <> "main" Then
            wd.Delete
        End If
    Next
    Application.DisplayAlerts = True
End Sub

Sub Bangou()
    wFm.Range("A2").FormulaR1C1 = "1"
    wFm.Range("A2:A317").DataSeries Rowcol:=xlColumns, _
    Type:=xlLinear, Date:=xlDay, _
    Step:=1, Trend:=False
End Sub

Sub Narabe()
    wFm.Sort.SortFields.Clear
    wFm.Sort.SortFields.Add Key:=Range(Ireru), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wFm.Sort
        .SetRange Range("A1:G317")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
Sub Keisen()
    Mx = Range("K65536").End(xlUp).Row
    Range("B16:K" & Mx).Borders(xlDiagonalDown).LineStyle = xlNone
    Range("B16:K" & Mx).Borders(xlDiagonalUp).LineStyle = xlNone
    With Range("B16:K" & Mx)
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).Weight = xlThin
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = xlHairline
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = xlHairline
    End With
End Sub
Sub Phani()
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    ActiveWindow.View = xlNormalView
End Sub

Sub Daimei()
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = "&F"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "&P / &N ページ"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.748031496062992)
        .RightMargin = Application.InchesToPoints(0.748031496062992)
        .TopMargin = Application.InchesToPoints(0.984251968503937)
        .BottomMargin = Application.InchesToPoints(0.984251968503937)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    
End Sub

Sub Denpyo()
    Dim wTo As Worksheet
    Dim Moto As Long
    Dim Saki As Long
    Dim Hiduke As Long
    
    Set wFm = Worksheets("main")
    WsDelete
    wFm.Activate
    Bangou
    Ireru = "B2:B317"
    Narabe
       
    For Moto = 2 To wFm.Range("B65536").End(xlUp).Row
        If wFm.Range("B" & Moto).Value <> wFm.Range("B" & Moto - 1).Value Then
            
            If Moto > 2 Then
                Keisen
                Daimei
                Phani
            End If
            
            Saki = 16
            Sheets("main1").Copy After:=Sheets(2)
            Set wTo = Worksheets(3)
            wTo.Name = wFm.Range("B" & Moto).Value
        End If
        Hiduke = wFm.Range("C" & Moto).Value
        wTo.Range("B" & Saki).Value = Left(Year(Hiduke), 2)
        wTo.Range("C" & Saki).Value = Month(Hiduke)
        wTo.Range("D" & Saki).Value = Day(Hiduke)
        wTo.Range("E" & Saki).Value = wFm.Range("D" & Moto).Value
        wTo.Range("F" & Saki).Value = wFm.Range("E" & Moto).Value
        wTo.Range("H" & Saki).Value = wFm.Range("F" & Moto).Value
        If wFm.Range("G" & Moto).Value > 0 Then
            wTo.Range("I" & Saki).Value = wFm.Range("G" & Moto).Value
        Else
            wTo.Range("J" & Saki).Value = wFm.Range("G" & Moto).Value
        End If
        If Moto > 2 Then
            wTo.Range("K" & Saki).Value = wFm.Range("G" & Moto).Value + wTo.Range("K" & Saki - 1).Value
        Else
            wTo.Range("K" & Saki).Value = wFm.Range("G" & Moto).Value
        End If
        Saki = Saki + 1
    Next
    
    Keisen
    Daimei
    Phani
    
    Ireru = "A2:A317"
    Narabe
    
    wFm.Activate
    wFm.Range("A2:A317").ClearContents
End Sub


そして、以下は、添削内容。

'データ数の増減に耐えられるプログラムにしましょう
'実際にデータ数を増減させて動作確認されると良いかと思います
'「317」という検索キーワードでコード内を検索もしてください
'あと、以下では書いていませんが、SubプロシージャにPublic, Privateキーワードも入れたいですね。
Option Explicit
Dim wFm As Worksheet
Dim Ireru As String
Dim Mx As Long

'↓Excellent v(^^*
Sub WsDelete()
    Dim wd As Worksheet
    Application.DisplayAlerts = False
    For Each wd In Worksheets
        If Left(wd.Name, 4) <> "main" Then
            wd.Delete
        End If
    Next
    Application.DisplayAlerts = True
End Sub

'↓Excellent v(^^*
Sub Bangou()
    wFm.Range("A2").FormulaR1C1 = "1"
    wFm.Range("A2:A317").DataSeries Rowcol:=xlColumns, _
    Type:=xlLinear, Date:=xlDay, _
    Step:=1, Trend:=False
End Sub

Sub Narabe()
    wFm.Sort.SortFields.Clear
    wFm.Sort.SortFields.Add Key:=Range(Ireru), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With wFm.Sort
        .SetRange Range("A1:G317") 'データ数可変でもOKになるようになおしましょう
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub
Sub Keisen()
    Mx = Range("K65536").End(xlUp).Row
    '[3] 以下、 With Range("B16:K" & Mx) ... End With で [4] までをくくれるのでは?と。
    '以下の要領。
    'With Range("B16:K" & Mx)
    '    .Borders(xlDiagonalDown).LineStyle = xlNone
    '    .Borders(xlDiagonalUp).LineStyle = xlNone
    '    .Borders(xlEdgeLeft).LineStyle = xlContinuous
    '    .Borders(xlEdgeLeft).Weight = xlThin
    '    .Borders(xlEdgeTop).LineStyle = xlContinuous
    '    .Borders(xlEdgeTop).Weight = xlThin
    '    .Borders(xlEdgeBottom).LineStyle = xlContinuous
    '    .Borders(xlEdgeBottom).Weight = xlThin
    '    .Borders(xlEdgeRight).LineStyle = xlContinuous
    '    .Borders(xlEdgeRight).Weight = xlThin
    '    .Borders(xlInsideVertical).LineStyle = xlContinuous
    '    .Borders(xlInsideVertical).Weight = xlHairline
    '    .Borders(xlInsideHorizontal).LineStyle = xlContinuous
    '    .Borders(xlInsideHorizontal).Weight = xlHairline
    'End With
    
    Range("B16:K" & Mx).Borders(xlDiagonalDown).LineStyle = xlNone
    Range("B16:K" & Mx).Borders(xlDiagonalUp).LineStyle = xlNone
    With Range("B16:K" & Mx)
        .Borders(xlEdgeLeft).LineStyle = xlContinuous
        .Borders(xlEdgeLeft).Weight = xlThin
        .Borders(xlEdgeTop).LineStyle = xlContinuous
        .Borders(xlEdgeTop).Weight = xlThin
        .Borders(xlEdgeBottom).LineStyle = xlContinuous
        .Borders(xlEdgeBottom).Weight = xlThin
        .Borders(xlEdgeRight).LineStyle = xlContinuous
        .Borders(xlEdgeRight).Weight = xlThin
        .Borders(xlInsideVertical).LineStyle = xlContinuous
        .Borders(xlInsideVertical).Weight = xlHairline
        .Borders(xlInsideHorizontal).LineStyle = xlContinuous
        .Borders(xlInsideHorizontal).Weight = xlHairline
    End With
End Sub
Sub Phani()
    'Sub Print_Area() のように、間にアンダーバーを入れた名前にするのもありです。VBのキーワードには、アンダーバーが入ったものはないので。
    'アンダーバーを間に入れるなら、簡単な英単語の組み合わせでも安全(VBのキーワードとかぶる心配はない)です
    ActiveWindow.View = xlPageBreakPreview
    ActiveSheet.VPageBreaks(1).DragOff Direction:=xlToRight, RegionIndex:=1
    ActiveWindow.View = xlNormalView
End Sub

Sub Daimei()
    '不要と思しきものがかなりありますね。ご自身で設定したものを見出し、それ以外は積極的に削除を!
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = "&F"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "&P / &N ページ"
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.748031496062992)
        .RightMargin = Application.InchesToPoints(0.748031496062992)
        .TopMargin = Application.InchesToPoints(0.984251968503937)
        .BottomMargin = Application.InchesToPoints(0.984251968503937)
        .HeaderMargin = Application.InchesToPoints(0.511811023622047)
        .FooterMargin = Application.InchesToPoints(0.511811023622047)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = False
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    
End Sub

Sub Denpyo()
    'Application.ScreenUpdating = False '高速化と画面チラツキ防止のため、画面更新を停止
    '↓Moto, Saki, Hidukeは、ハンガリアン記法にしてもいいかも。たとえば、 sMoto, sSaki, dHidukeという変数名で。
    Dim wTo As Worksheet
    Dim Moto As Long
    Dim Saki As Long
    Dim Hiduke As Long
    
    Set wFm = Worksheets("main")
    WsDelete
    wFm.Activate
    Bangou
    Ireru = "B2:B317" '←データ数可変でも動くようになおしたいですね。
    Narabe
       
    For Moto = 2 To wFm.Range("B65536").End(xlUp).Row 'エクセル2007以降のファイル形式で、かつ、データ数が65566件以上ある場合には注意!
        If wFm.Range("B" & Moto).Value <> wFm.Range("B" & Moto - 1).Value Then
            
            If Moto > 2 Then
                '[1]↓Keisen, Daimei, Phani を実行するプロシージャを何か用意してもよいですね。そうすると、[2]での記述も一行で済みます
                Keisen
                Daimei
                Phani
            End If
            
            Saki = 16
            Sheets("main1").Copy After:=Sheets(2)
            Set wTo = Worksheets(3)
            wTo.Name = wFm.Range("B" & Moto).Value
        End If
        Hiduke = wFm.Range("C" & Moto).Value
        '以下3つは、Format関数を使うこともできます。たとえば直下の行の右辺は、 Format(Fiduke,"yy")
        wTo.Range("B" & Saki).Value = Left(Year(Hiduke), 2)
        wTo.Range("C" & Saki).Value = Month(Hiduke)
        wTo.Range("D" & Saki).Value = Day(Hiduke)
        wTo.Range("E" & Saki).Value = wFm.Range("D" & Moto).Value
        wTo.Range("F" & Saki).Value = wFm.Range("E" & Moto).Value
        wTo.Range("H" & Saki).Value = wFm.Range("F" & Moto).Value
        If wFm.Range("G" & Moto).Value > 0 Then
            wTo.Range("I" & Saki).Value = wFm.Range("G" & Moto).Value
        Else
            wTo.Range("J" & Saki).Value = wFm.Range("G" & Moto).Value
        End If
        If Moto > 2 Then
            wTo.Range("K" & Saki).Value = wFm.Range("G" & Moto).Value + wTo.Range("K" & Saki - 1).Value
        Else
            wTo.Range("K" & Saki).Value = wFm.Range("G" & Moto).Value
        End If
        Saki = Saki + 1
    Next
    
    '[2]
    Keisen
    Daimei
    Phani
    
    Ireru = "A2:A317"
    Narabe
    
    wFm.Activate
    wFm.Range("A2:A317").ClearContents 'データ数可変でもOKになるようになおしましょう
    Application.ScreenUpdating = True '画面更新を再開
End Sub

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11471]基礎講座第4章5 – 「ハナコのステップ」のふりかえり

2019-06-24 09:26:02 ゲストさんからの投稿です。

小川様
この度はお世話になっております。

まさか自分がマクロを書ける日が来るとは思ってもおらず、大変楽しく学ばさせていただいております。

1つ質問なのですが、縦の行ついてはfor next構文で繰り返すことができますが、横の列についても同じように繰り返すことができるのでしょうか?

横の列はセルの指定をアルファベットでするのが通常と思うので、普通に考えるとできないように思うのですがいかがでしょうか?

また、もしもそれが可能なのであれば、縦の行を一通り繰り返した後に、1つ右の列にずらして同じように縦の行を繰り返すようなこともできるのでしょうか?

ご回答お待ちしておりますので、よろしくお願いいたします。

小谷

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11469]特別動画: EmEditor設定ガイド

2019-06-21 10:07:21 ざきさんさんからの投稿です。

EmEditorを「C:¥EmEditor」という場所に移動させたら、アイコンが消えてしまいました。
機能的には正常に使えているのですが、アイコンを復活する方法がわかりません。
教えていただきたいです。

[ 続きを読む ]  返信件数:5件  [ 動画を見る] 


各講座ごとのメッセージを見る場合はこちら

 

まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ