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

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

[9052]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2017-10-13 16:43:27 浦山大さんからの投稿です。

問題文だけ参照にし、
ノーヒントで罫線を引く部分まで作りました(通し番号が振られていない前提で作成)。
きちんと動きました…(大丈夫でしょうか?)。
一度、紙で印刷してみたら、A4用紙3枚分位になりました。

勉強を始めて2か月程でこんなに書けるようになるなんて思っていませんでした。感謝しています。
引き続き、よろしくお願いします(そろそろ、フォローメールセミナー30題にも取り掛かっていきたいと思っています)。

Option Explicit

Dim wFm, wTo, wS, wA As Worksheet
Dim cMx, cCo, cTo As Long
Dim daHiduke As Date
Dim strNamae As String

Sub Zentai()
    Set wFm = Worksheets("main")
    Set wTo = Worksheets("main1")
    cMx = wFm.Range("B" & wFm.Rows.Count).End(xlUp).Row
    cCo = 2
        Delete_Sheet
        Tooshi_bangou
    cCo = 2
        NarabekaeB
    cTo = 16
        Sheet_Create_Kakikomi
    cCo = 2
    strNamae = ""
        NarabekaeA
        Sakujo_Tooshibangou
End Sub

Sub Delete_Sheet()
       For Each wS In Worksheets
       Application.DisplayAlerts = False
           If wS.Name <> "main1" And wS.Name <> "main" Then
                wS.Delete
           End If
       Next
       Application.DisplayAlerts = True
End Sub

Sub Tooshi_bangou()
    For cCo = 2 To cMx
        wFm.Range("A" & cCo).Value = cCo - 1
    Next
End Sub

Sub NarabekaeB()
    With wFm
        wFm.Sort.SortFields.Clear
        wFm.Sort.SortFields.Add Key:=Range("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .Sort
            .SetRange Range("A1:G" & cMx)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    End With
End Sub

Sub Sheet_Create_Kakikomi()
    For cCo = 2 To cMx
        If wFm.Range("B" & cCo).Value <> strNamae Then
            If strNamae <> "" Then
                wA.Range("H2").Value = wA.Range("K" & cTo - 1).Value
                Keisen
            End If
            cTo = 16
            strNamae = wFm.Range("B" & cCo).Value
            wTo.Copy after:=wFm
            Set wA = ActiveSheet
            wA.Name = strNamae
            wA.Range("J12").Value = strNamae
        End If
        With wA.Range("B" & cTo)
            .Offset().Value = Year(wFm.Range("C" & cCo).Value)       'wA B
            .Offset(, 1).Value = Month(wFm.Range("C" & cCo).Value)       'wA C
            .Offset(, 2).Value = Day(wFm.Range("C" & cCo).Value)         'wA D
            .Offset(, 3).Value = wFm.Range("D" & cCo).Value                  'wA E
            .Offset(, 4).Value = wFm.Range("E" & cCo).Value                  'wA F
            .Offset(, 6).Value = wFm.Range("F" & cCo).Value                  'wA G
            Select Case wFm.Range("G" & cCo).Value                                                     'H
                Case Is > 0
                    .Offset(, 7).Value = wFm.Range("G" & cCo).Value              'wA I
                Case Is < 0
                    .Offset(, 8).Value = wFm.Range("G" & cCo).Value              'wA J
            End Select
            If cTo = 16 Then
                .Offset(, 9).Value = .Offset(, 7).Value + .Offset(, 8).Value       'wA K= wA I+ wA J
            Else
                .Offset(, 9).Value = wA.Range("K" & cTo - 1).Value + .Offset(, 7).Value + .Offset(, 8).Value      'wA K=wA Kの一個上+wA I+ wA J
            End If
        End With
        cTo = cTo + 1
    Next
    wA.Range("H2").Value = wA.Range("K" & cTo - 1).Value
    Keisen
End Sub

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

Sub Sakujo_Tooshibangou()
    wFm.Range("A2:A" & cMx).ClearContents
End Sub

Sub Keisen()
    With wA.Range("B16:K" & cTo)
        .Borders(xlDiagonalDown).LineStyle = xlNone
        .Borders(xlDiagonalUp).LineStyle = xlNone
        With .Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlHairline
        End With
        With .Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlHairline
        End With
    End With
End Sub

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

[8035]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2017-04-21 11:14:39 松隈 利幸さんからの投稿です。

小川 様

お世話になります。
何度も復習しながら覚えていっています。
伝票マクロを何とか会社用に代えてみたのですが、
一部でどうしても引っかかるところがあります。
Private Sub ExeCreateDenpyo()
DeleteSheets
Dim lnFm As Long
Dim lnFmMx As Long
Dim st As String
Dim shFm As Worksheet
Dim shTo As Worksheet
Dim dt As Date
Set shFm = Worksheets(“main”)
lnFmMx = shFm.Range(“E1048576”).End(xlUp).Row
Dim lnTo As Long
For lnFm = 3 To lnFmMx
If st <> shFm.Range(“E” & lnFm).Value Then
If lnFm > 3 Then
Keisen
End If
st = shFm.Range(“E” & lnFm).Value
Sheets(“main1”).Copy After:=Sheets(2)
Set shTo = ActiveSheet
> shTo.Name = st
lnTo = 16
End If
shTo.Range(“A” & lnTo).Value = shFm.Range(“B” & lnFm).Value
shTo.Range(“B” & lnTo).Value = shFm.Range(“C” & lnFm).Value
shTo.Range(“C” & lnTo).Value = shFm.Range(“D” & lnFm).Value
shTo.Range(“D” & lnTo).Value = shFm.Range(“E” & lnFm).Value
shTo.Range(“E” & lnTo).Value = shFm.Range(“F” & lnFm).Value
shTo.Range(“F” & lnTo).Value = shFm.Range(“G” & lnFm).Value
shTo.Range(“G” & lnTo).Value = shFm.Range(“H” & lnFm).Value
lnTo = lnTo + 1
Next
goukei
Keisen
shFm.Activate
End Sub

> shTo.Name = st

のところでデバッグしてしまうのです。

この名前は既に使われています。別の名前を入力してください。
というメッセージがあります。
最初はうまくいっていたのですが、最近でるようになりました。
どこが悪いのでしょうか。
お教えください。
Excel2016を使用しています。

最後の動画配信後ずいぶん時間が経っている 松隈

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

[6043]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2016-03-22 19:01:49 平澤 延弘さんからの投稿です。

小川先生
 こんにちは。
 初めてホームページで伝票作成マクロの動画を見た後、
長い間自分でこんなプログラムを作成してみたいと思ってきましたが、
四苦八苦しながらもなんとかここまで来ることができました。

 私は伝票作成業務そのものは担当しておりませんが、
このマクロを学ぶ過程で得たデータの転記やシート作成の知識は、
十分私の業務に活かせるものでした。
まだ仕事ではここまで生産性の高いマクロは作成できていませんが、
「3日分の仕事を3分で」というレベルまでは大分近づいてきたように思います。

 この後は他の講座を受講してさらに知識を深めたいと思いますので、
これからもよろしくお願いいたします。

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

[4097]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2015-04-16 20:36:51 井上 聡さんからの投稿です。

罫線の範囲を設定する方法について
Dim InMx As Long
InMx = Range(“B” & Rows.Count).End(xlUp).Row
Range(“B16:K” & InMx + 1).Select
この場合は、変数の範囲が選択されました。
(“K” & Rows.Count).End(xlUP)のつもりでしたが範囲が選択されません。
  Range(“B16:K” & Rows.Count).End(xlUP).Select
一行で表すにはどうすればいいのでしょうか。

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

[3358]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-11-30 20:20:40 受講生さんからの投稿です。

小川先生
伝票作成はメールセミナーを先に見ましたが、動画ではメールセミナーとは違うやり方も説明されていて、参考になる部分も多かったです。
「罫線を最終行より1行多く引かないとエラーとなる」とのことでしたが、当方の環境(Excel2010)では特にエラーは出ませんでした。
また、Withを使いこなせるようなるために、あえてオブジェクト型変数を使わずに作成してみました。

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

[2709]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-10-13 11:01:36 受講生さんからの投稿です。

伝票作成マクロ、財務という仕事柄、大変参考になりました。
もう少し復習した後、発展編2に進んでいこうかと思います。

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

[980]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-01-27 18:00:39 望月 晋一さんからの投稿です。

先ほど出したコメントの補足です。
●罫線作成部分の応用について~応用と言えるかわかりませんが、転記元表の明細行数を数えて、転記先表に記載するといった作業でも、条件付けの点などで共通すると気が付きました。
と書いた部分ですが、ここで転記元表と転記先表という表現を使いましたが、課題の「main」から「main1」のコピーシートへの転記の場合のことではありません。課題の中で最初の方に、重複しないリスト作成というのがありました。重複しないリストを別シートに作る場合に、合わせて転記元の明細件数(重複している件数ということになる)を、重複しないリストに併記する場合の事例です。紛らわしい書き方ですみません。でもこうした使い方はありそうなので上げておきました。

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

[975]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-01-27 13:51:29 望月 晋一さんからの投稿です。

昨年セミナーを受講した時、取り組んだ課題ですが、改めてこの動画セミナーを一通り見てプログラムを2回最初から作ってみました。マクロの自動記録から使いたい機能を取ってくる所など、この動画で出てくる操作手順を思い起こしながら取り組んでみました。改めて実によく考え尽くされた手順であることがわかりました。もうこの課題には何回も取り組んでいますが、その度に、新たな気付きや「なるほど!」と感心する事があります。今更ながらですが。例えば次のような点です。
●「ハナコ」のステップ~VBAがよくわからない時、上から順に書いていこうとする。未熟な段階では仕方ないかもしれませんが、VBAに限らず他の思考作業でも、上から順に考えてばかりだったのかなという気がします。こなれた表現をすると、「頭の使い方」にも通じる法則かなと思います。
●プログラム内の罫線作成部分~どこに入れるかと考える所で、どうしても最初は、メインの処理の前後のどこか? ここだとこの条件に引っかかる、うまくいきそうにないとか、すぐ悩みモードに入って手が止まってしまいがちだと思いますが、IF文で使う条件付けをしたら無理なくあてはまるという、できてしまえば「え、これだけ!」という答えですが、この答えに辿り着くまでの思考ステップも、VBA習得に必須な技術だと思いました。
●罫線を最終行より一行多く引く設定の意味~前に学んでいたかもしれませんが、今回の動画セミナーで、間の行を考えての事という説明を見て、「なるほど」と思いました。罫線を引く範囲を最終行に合わせる方法も解説されていて、こちらも、「あ、こういうやり方があるんだ」と、柔軟な書き方、使い方ができるものだと感心しました。
●罫線作成部分の応用について~応用と言えるかわかりませんが、転記元表の明細行数を数えて、転記先表に記載するといった作業でも、条件付けの点などで共通すると気が付きました。
●With構文~罫線機能の部分とか明細行処理とか、頭出しが同じ記述箇所がVBAでは数多く出てくるので、この構文を活用できるとプログラムが大分読みやすくなり、プログラム作成時の間違い探しや作成後の保守で、効率アップが図れると思いました。先生の動画セミナーでは、置換機能を合わせて使って、With構文を入れた記載にさっと変える場面が出てきましたが、こうした技術も是非身に付けたいと思いました。

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

[952]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-01-14 22:51:52 受講生さんからの投稿です。

罫線だけのマクロを書いて本体のマクロに呼び出させるようにするとスッキリ書けるんですね!
withの使いこなしを更に練習してみようと思いました。

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

[921]データ転記先のシートすべてに対し、罫線を引く等の後処理をする

2014-01-06 01:01:39 山口 舞さんからの投稿です。

面白くて一気に最後まで見ました!罫線ワザは、メール講座を添削いただいたときも鮮やかだと思いましたが、動画になるとより鮮烈な印象として残りますね。
また他の内容も、回を重ね繰り返し登場した場合には一度目とは違う手法を紹介されている等、日頃から「いかにしてより効率化できるか」を検討するヒントがたくさんあったと思います。
もう一度、次はノーヒントで伝票作成にチャレンジしたいと思いました。ありがとうございました!

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


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

 

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

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

トップへ