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

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

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

2020-07-31 00:59:22 受講生さんからの投稿です。

お世話になります。

罫線のマクロを呼び出すタイミング、難しかったです。
何度かステップインで確認してなんとかできました。

過去のコメント欄を読むのも勉強になりますね。

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

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

2020-07-28 01:50:03 受講生さんからの投稿です。

12309 のコメント失礼いたしました。
一部修正します。
コメント投稿してみましたが、送信前の私のチェックが十分でないために
間違いに気づいて大変恥ずかしく思います。
削除頂けないでしょうか。

仕事でも、このような失敗があります。
チェックを怠ってミスすることや
自分の失言に自分でゲンナリすることもあります。
こうした自分自身も変わりたいです。

Option Explicit
 Sub yoshu01()
'[1]
    Dim shFm As Worksheet
    Dim lnFm As Long
    Dim lnFmMx As Long
    Set shFm = Worksheets("main")
    InFmMx = shFm.Range("C65536").End(xlUp).Row
    For lnFm = 2 To InFmMx
        If shFm.Range("B" & lnFm).Value <> shFm.Range("B" & lnFm + 1).Value Then 'ここで条件を追加しました
            Debug.Print shFm.Range("B" & lnFm).Value
        End If
    Next
    
 End Sub
Sub yoshu02()
'[2]
    Dim shFm As Worksheet
    Dim shTo As Worksheet
    Dim lnFm As Long
    Dim lnFmMx As Long
    Dim st As String
    Set shFm = Worksheets("main")
    lnFmMx = shFm.Range("C65536").End(xlUp).Row
    For lnFm = 2 To lnFmMx
        If shFm.Range("B" & lnFm).Value <> shFm.Range("B" & lnFm + 1).Value Then
            st = shFm.Range("B" & lnFm).Value
            Sheets("main1").Copy After:=Sheets(2)    'シート追加、シート名の指定しました
            Set shTo = ActiveSheet
            shTo.Name = st
        End If
    Next
    
End Sub
Sub yoshu03()
'[3]
    delete_renshu       'ここにシート削除のプロシージャを追加しました
    Dim shFm As Worksheet
    Dim shTo As Worksheet
    Dim lnFm As Long
    Dim lnFmMx As Long
    Dim st As String
    Set shFm = Worksheets("main")
    lnFmMx = shFm.Range("C65536").End(xlUp).Row
    For lnFm = 2 To lnFmMx
        If shFm.Range("B" & lnFm).Value <> shFm.Range("B" & lnFm + 1).Value Then
            st = shFm.Range("B" & lnFm).Value
            Sheets("main1").Copy After:=Sheets(2)
            Set shTo = ActiveSheet
            shTo.Name = st
        End If
    Next
    
End Sub
Sub delete_renshu()
    Dim sh As Worksheet
    Application.DisplayAlerts = False
    For Each sh In Worksheets
        If Left(sh.Name, 4) <> "main" Then
            sh.Delete
        End If
    Next
    Application.DisplayAlerts = True
End Sub

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

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

2020-07-26 12:25:21 mayuさんからの投稿です。

お世話になります。
するどいツッコミ頂いたので(笑)
フォローアップセミナーのうち、最低でも3回に1回は感想を送ります!
言い訳になりますが、今朝ちょうど取り組んでいたところだったのですごくタイムリーでおかしかったです(笑)
ようやく第3回フォローアップセミナーまで進みました。
追加したシートを選択するのに、ActiveSheet.Nameで指定しましたが、問題ないでしょうか?
解答例では、Sheets(“main1 (2)”).Nameでシート名が指定されていました。
課題通り動いています。
こんな質問していいか迷いましたが、少し気になりましたので、よろしくお願いいたします。

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

[12289]ワーク「Alt+Tab」

2020-07-22 12:32:41 受講生さんからの投稿です。

毎日とは行きませんが、ぼちぼち練習を始めてます。まだmoveは40ちょいレベルですが。
会社PCのキーボードはフルサイズですが自宅PCはノートのため、ctrl、altキーやカーソルキーが小さく無理やり押し込まれたレイアウトなので、指使いに戸惑っています。左親指で左のalt+右手小指でカーソル、でもいいのでしょうか?。それでもカーソルキーはひどく窮屈でミスタッチが多くなります。
100台への道のりは遠いですが頑張ります(ほんとにできるのかな)。

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

[12287]複数のマクロを連続実行する – Excel2007,2010,2013,2016の場合

2020-07-22 11:08:03 受講生さんからの投稿です。

この講座前半ではサンプルファイルを動かしながら学習できていたのですが、数日間のうちになぜか「このプロジェクトのマクロは無効に設定されています。マクロを有効にする方法については…」との表示が出るようになりました。セキュリティ設定は、先生の仰るように「警告を表示してすべてのマクロを無効にする」となっています。ただ、Excelファイルを開いた際の「セキュリティの警告」というバーは出ない状態です。いろいろと検索してもセキュリティ設定の件しか出てこないため困っております…

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

[12284]発展1講座第4章 – For Each構文 セルのコレクション

2020-07-20 07:25:56 さざなみさんからの投稿です。

ここでたずねるべきかもわかりませんが。重複しているデータの削除をしたいです。キーとなる列でダブりを探して記号に変換し、それ以外を別シートに移そうと思います。列には10 桁以上の英数があります。一番上のセルと同じ値が次のセルから最後まで検索していくのを考えていますがうまくいきません。Countifも考えましたが。どうしたらいいでしょうか?

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

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

2020-07-19 17:20:37 受講生さんからの投稿です。


小川先生

お世話になっております。
hiroと申します。

コメント欄を拝見し、
他の受講生の方のレベルの高さに大変驚いておりますが、
伝票作成の宿題を作成致しましたので、
ご確認の程宜しくお願い致します。

個人的には変数の名前の付け方が気に入っておりません。
宜しくお願い致します。


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

[12279]補講2-ディクショナリーオブジェクトの .Count プロパティ

2020-07-19 17:20:26 受講生さんからの投稿です。

小川先生:
いつもお世話になっております。連想配列の記述法について質問です。
もともと講座本編の方では連想配列については以下「hoge」の記述をされていたかと思います。
「As Scripting.Dictionary」や「Set dic = CreateObject(“Scripting.Dictionary”)」がそれぞれ何を意味しているのかも明確に理解せずに、とりあえず丸覚えしておりました・・・。
しかし今回の補講では「hogehoge」のような記述になっております。
これらのコードがそれぞれ何を意図しているのか、どのように使い分けるのかをご教示頂けると幸いです。

Sub hoge()
    Dim dic As Scripting.Dictionary
    Set dic = CreateObject("Scripting.Dictionary")
    dic.Add "小川", 83
    dic.Add "山田", 75
    dic.Add "田中", 92
    Debug.Print dic.Item("小川")
    Debug.Print dic.Keys(0), dic.Items(0)
End Sub
Sub hogehoge()
    Dim dic As New Scripting.Dictionary
    dic.Add "小川", 83
    dic.Add "山田", 75
    dic.Add "田中", 92
    Debug.Print dic.Item("小川")
    Debug.Print dic.Keys(0), dic.Items(0)
End Sub

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

[12278]エクセルマクロ・VBAを利用するための推奨設定 – Excel2010、Excel2013、Excel2016の場合

2020-07-18 06:27:16 受講生さんからの投稿です。

Excel for Macの場合にメッセージバーが見つけられないのですが設定の必要はありますでしょうか。

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

[12266]発展1講座第4章 – For Each構文 カンニングペーパー

2020-07-12 19:04:14 受講生さんからの投稿です。

下記の「bk」に関して質問です。
Dim bk As Workbook
For Each bk In Workbooks
Next

「bk」の名前の付け方ですが、「wk」ではだめでしょうか?

他のだと、変数の先頭名にオブジェクト型の先頭名をつけています。
ex
・Dim rg As Range
・Dim sp As Shape
・Dim ws As Worksheet

統一するなら、「bk」より「wk」のほうが個人的にはわかりやすいとおもうのですが、何か理由ありますか?

多分、worksheetsのオブジェクト型と被るからだと思いますが、、、

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

[12252]補講9-たった1行のコードでセルのデータを配列に投入する

2020-07-06 11:37:13 受講生さんからの投稿です。

お世話になっております。
vba発展編2を購入し勉強しております。enshuフォルダにある各ファイルの問題の回答はどちらで確認できますでしょうか?
ご回答お願いいたします。

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

[12239]Functionプロシージャ演習中

2020-07-02 06:27:54 kurosukeさんからの投稿です。

Functionプロシージャで32bitの2進数を10進数に変換する為のマクロを作成しましたが、「オーバーフロー」のエラーとなります。
引数Valueには「11000000101010000000000100000000」が渡される想定です。戻り値を長整数型にしているので、数値は範囲内だと思いますが、オーバーフローの解消方法をご教授頂けないでしょうか。

Function Convert2to10(Value As String) As Long
    Dim Ret As Long
    Dim K As Long
    Dim X As Long
    For K = 1 To Len(Value)
        If Mid(Value, Len(Value) - K + 1, 1) = "1" Then
            X = 2 ^ (K - 1)
            Ret = Ret + X
        End If
    Next K
    Convert2to10 = Ret
End Function

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

[12236]VLookUp関数、Index関数、Match関数より便利なマクロ-複数シート間、複数ファイル間でのマッチング

2020-07-01 18:19:04 さざなみさんからの投稿です。

質問です。ある10桁以上の連続した番号を含むファイルAがあります。Bにも同じ番号が入力されています。10桁以上の番号をキーにして、Bの情報をAのファイルに転記したいのですが、Bの番号にはハイフンが含まれています。ハイフンを排除したいのですがどうしたらできますか?発展編2を受ければスマートなやり方ができますか?検索・置換やブイルックアップを使わずにマクロでやりたいです。

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

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

2020-06-29 18:16:54 受講生さんからの投稿です。

お世話になります。
1ヶ月半ワークに取り組んだ結果を報告します。

・move:43→122
・AltTab:60→118
・Advanced:39→71
・PgDn:28→62
・ShiftF10:17→51
・web:13→35

やり始めた頃はスコアを意識するあまり力が入っていましたが、力が入るとミスが多くなり、ミスの対処にも時間が掛かっていました。(無理やり何とかしようとして余計おかしくしていました)
力の入り過ぎに気付き、力を抜くようになってからはミスが減り、ミスしても冷静に対処できるようになりました。
仕事で疲れて頭が少しぼーっとしている時にスコアが更新できたことには驚いています。

家でも会社でもマウスを使う頻度が減り、マウスを握ると違和感を感じるようになりました。
画面を前屈みで見ることも減ったので、疲労感も軽くなりました。

仕事中はショートカットが練習し放題なので、いろいろ試してキーボードで操作できる範囲を広げていきたいと思います。

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

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

2020-06-22 13:38:02 受講生さんからの投稿です。

とてもわかりやすく、Macroを学ぶメリットがしっかり伝わりました。

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

[12211]イベントプロシージャを作ってみる

2020-06-17 16:13:09 受講生さんからの投稿です。

お世話になります。
動画では取り扱われていなかった内容で恐縮ですが、例えばエクセルシートのA1セルに氏名が表示されたら、イベント機能でシート名が苗字に変更されるコードを書きたいのですが、うまくいきません。

Left関数で左から2桁を取ってくるコードはうまく動きましたが、苗字が3文字あるいは1文字の方についてもうまく表示されるよう、Find関数を使って、空欄の前まで取ってくるコードを取り入れたのですが、(通常の関数ではうまくいくのですが)エラーで止まってしまいます。
イベント機能時はFind関数は使用できないでしょうか?

エラー表示:コンパイルエラー、subまたはfunctionが定義されていません。
(苗字2文字設定)正常に動きます
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(“A1”)) Is Nothing Then Exit Sub
ActiveSheet.Name = Left(Range(“A1”), 2)
End Sub


(苗字3文字・1文字対応)正常に動きません
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(“A1”)) Is Nothing Then Exit Sub
ActiveSheet.Name = Left(Range(“A1″), Find(”  ”, Range(“A1”)) – 1)
End Sub

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

[12193]基礎講座第2章7 – 日付の扱い

2020-06-14 19:56:30 さざなみさんからの投稿です。

質問です。マクロで日付を元号で表示することはできますか?(例)R02.06.15とエクセルに表記したい。

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

[12189]エクセルマクロ研修の選び方6-講座紹介

2020-06-14 08:26:39 ナオさんからの投稿です。

初めまして。「エクセルマクロ・VBA導入編」大変参考になりました。
引き続き、「エクセルマクロ・VBA基礎編」を受講しようと思っていますが、基礎編だけにするか、基礎編と発展編1セットにするか迷っています。
基礎編を完全マスターしてから、発展編1を受講した方が良いでしょうか。

現在エクセルマクロ・VBAでやりたい事は
1,他部門の工程を自部門の工程に組込み全体の工程表を作成する。
 ※他部門の工程表と自部門の工程表のエクセルのフォームは違います。
2,他部門の工程表に、自部門の工程を追加し、更新日を変更してファイルをアップロードする。
上記のような事をマクロ・VBAを使って作成したいと考えています。
よろしくお願いいたします。


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

[12182]静的配列

2020-06-09 14:09:12 近藤 学さんからの投稿です。

楽しんで受講しております。質問です

Range(“B1”).Offset(, cnt).Value = st

Offset(, cnt)

offset のあとのカッコ内のカンマの前が空欄になっているのはどういう意味がありますか? はじめて見ました。

よろしくお願いします。

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

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

2020-06-07 21:59:49 さざなみさんからの投稿です。

質問です。同じシート内のG列にある氏名と同じ氏名をA列から探し、一致した氏名を別シートに転記、B列(郵便番号)、C列(住所)も転記するものを考えています。しかし、1行目しか転記できず、次を検索して同様に転記するマクロがうまくできません。どのように作成したらいいでしょうか?
‘シート2のG列の値がA列と一致した氏名と郵便番号B列・住所C列をシート5へ転記
Sub tenki()
Dim hida
Dim migi
migi = 3
For hida = 2 To 20
If Worksheets(“Sheet2”).Range(“A” & hida).Value = Worksheets(“Sheet2”).Range(“G” & hida).Value Then
Worksheets(“Sheet5”).Range(“B” & migi).Value = Worksheets(“Sheet2”).Range(“A” & hida).Value
Worksheets(“Sheet5”).Range(“C” & migi).Value = Worksheets(“Sheet2”).Range(“B” & hida).Value
Worksheets(“Sheet5”).Range(“D” & migi).Value=Worksheets(“Sheet2”).Range(“C” & hida).Value
migi = migi + 1
End If
Next
End Sub

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

[12168]エクセルマクロ・VBAを利用するための推奨設定 – VisualBasicEditorの初期設定

2020-06-07 17:07:52 ゲストさんからの投稿です。

お世話になっております。マクロの勉強を始めようとしているところで、こちらにお世話になっております。
Visual Basic のツールにポインタを持っていくとメニューがドロップダウンしてきますが、いずれもアクティブになっておらず、オプションも選べません。もう一つのPCも同様でして・・どのようなことが考えられるでしょうか。

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

[12164]転記先ファイルを生成してデータを流し込む。

2020-06-06 16:29:17 受講生さんからの投稿です。

質問ですが、以下のコードが今回解説で使われていました。

Workbooks(fname).Worksheets("転記先").Range("B" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("B" & moto).Value
Workbooks(fname).Worksheets("転記先").Range("C" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("C" & moto).Value
Workbooks(fname).Worksheets("転記先").Range("D" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("F" & moto).Value
Workbooks(fname).Worksheets("転記先").Range("E" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("E" & moto).Value
Workbooks(fname).Worksheets("転記先").Range("F" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("D" & moto).Value
Workbooks(fname).Worksheets("転記先").Range("G" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("G" & moto).Value


私は下記のコードを使って動かせたのですが、解説通りのほうがよろしいのでしょうか?

Workbooks(fname).Worksheets("転記先").Range("B" & saki & ":G" & saki).Value = Workbooks("ks204.xls").Worksheets("List").Range("B" & moto & ":G" & moto).Value

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

[12159]残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

2020-06-01 16:08:52 受講生さんからの投稿です。

お世話になっております。
変数が重なると、難しいです。変数の値を設定する行を間違えてばかりです。

疑問に思った点があるので、質問をします。
「gyo=6 To 33」と指定しているのに、中断モードで確認しているときに、最後の「Next」にきて「gyo」にカーソルを合わせると、「gyo=34」となります。
指定している33以上は、いかないかと思ったのですが、実際は、34まで進んでいます。
gyoの値を指定しているのに不思議です。

上手く説明できず申し訳ございません。
どうぞよろしくお願いいたします。

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

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

2020-05-31 18:47:32 受講生さんからの投稿です。

お世話になります。
今回のセミナーまでのカレンダー作成を何も見ずに1から書き上げてみました。
サンプルコードと違う部分記述やまとめ方をしている部分もいくつかありますので添削していただけると幸いです。

Option Explicit

Dim dt1 As Date
Dim b As Boolean
Sub shCreate()
    
    Dim lnMon As Long
    Dim shTo As Worksheet
    Dim lnMx As Long
    
    Application.ScreenUpdating = False
    lnMx = Worksheets("Summary").Range("A" & Worksheets("Summary").Rows.Count).End(xlUp).Row
    
    Dim dt As Date
    dt = #1/1/2009#
    
    If lnMx > 1 Then
        Worksheets("Summary").Range("A2", "E" & lnMx).ClearContents
        Worksheets("Summary").Range("A2", "E" & lnMx).Interior.Pattern = xlNone
        Worksheets("Summary").Range("A2", "E" & lnMx).Font.ColorIndex = 1
        Worksheets("Summary").Range("A2", "E" & lnMx).Font.Bold = False
    End If
    
    shDelete
    For lnMon = 1 To 12
        Sheets("Summary").Copy After:=Sheets(Worksheets.Count)
        Set shTo = ActiveSheet
        shTo.Name = lnMon & "月"
    Next
    
    Dim c As Long
    c = 1
    Dim ws As Worksheet
    For Each ws In Worksheets
        If Right(ws.Name, 1) = "月" Then
            ws.Select
            dt1 = DateAdd("m", c - 1, dt)
            shKousei
            c = c + 1
        End If
    Next
    Worksheets("Summary").Select
    Application.ScreenUpdating = True
End Sub

Sub shDelete()
    Dim ws As Worksheet
    Application.DisplayAlerts = False
    For Each ws In Worksheets
        If Not ws Is Worksheets("Control") Then
            If Not ws Is Worksheets("Summary") Then
                ws.Delete
            End If
        End If
    Next
    Application.DisplayAlerts = True
End Sub

Sub shKousei()
    Dim dt2 As Date
    Dim c As Long
    Dim n As Long
    Dim shSummary
    Set shSummary = Worksheets("Summary")
    Dim shControl
    Set shControl = Worksheets("control")
    Dim lnSumMx
    
    lnSumMx = shSummary.Range("A" & shSummary.Rows.Count).End(xlUp).Row - 1
    
    dt2 = dt1
    c = 0
    
    Dim rgSummary As Range
    Dim rgControl As Range
    
    With Range("A2")
        Do While Month(dt1) = Month(dt2)
            .Offset(c, 0).Value = dt1
            .Offset(c, 1).Value = WeekdayName(Weekday(dt1))
            .Offset(c, 2).Value = #9:00:00 AM#
            .Offset(c, 3).Value = #5:00:00 PM#
            .Offset(c, 4).Formula = "=" & .Offset(c, 3).Address & "-" & .Offset(c, 2).Address
            Holiday
            For n = 0 To 4
                Set rgSummary = shSummary.Range("A2").Offset(lnSumMx + c, n)
                Set rgControl = shControl.Range("A1").Offset(Weekday(dt1), 0)
                rgSummary.Formula = "='" & .Worksheet.Name & "'!" & .Offset(c, n).Address
                With .Offset(c, n)
                    If b = True Then
                        .Interior.ColorIndex = shControl.Range("F2").Interior.ColorIndex
                        .Font.ColorIndex = shControl.Range("F2").Font.ColorIndex
                        .Font.Bold = shControl.Range("F2").Font.Bold
                        rgSummary.Interior.ColorIndex = shControl.Range("F2").Interior.ColorIndex
                        rgSummary.Font.ColorIndex = shControl.Range("F2").Font.ColorIndex
                        rgSummary.Font.Bold = shControl.Range("F2").Font.Bold
                    Else
                        .Interior.ColorIndex = rgControl.Interior.ColorIndex
                        .Font.ColorIndex = rgControl.Font.ColorIndex
                        rgSummary.Interior.ColorIndex = rgControl.Interior.ColorIndex
                        rgSummary.Font.ColorIndex = rgControl.Font.ColorIndex
                    End If
                End With
            Next
            dt1 = DateAdd("d", 1, dt1)
            c = c + 1
        Loop
    End With
End Sub

Sub Holiday()
    b = False
    Dim c As Long
    For c = 2 To 18
        If dt1 = Worksheets("Control").Range("C" & c).Value Then
            b = True
        End If
    Next
End Sub

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

[12147]基礎講座第3章3 – Left関数、Mid関数、Right関数

2020-05-31 06:19:53 受講生さんからの投稿です。

初歩的な質問です。
”A1”というのを入力するのに、” と A の二文字は
shift キーを都度押しながら入力しているので時間がかかるのですが
簡単に入力できる方法はないでしょうか?
宜しくお願いします。

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

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

2020-05-28 19:40:56 受講生さんからの投稿です。

とてもためになりました。

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

[12138]エクセルマクロ・VBA発展編1フォローアップミニセミナーNo.03

2020-05-27 01:25:36 福島さんからの投稿です。

小川先生
いつも大変お世話になっております。
みなさまとはレベルが違う質問で失礼いたします。

 ◆【 テキスト中級編 】が、
どの講座の どのテキストか? を教えて下さい。

  ( 解答例メールに【 テキスト中級編第5章 参照】の記載があります )

・導入編、基礎編、発展編1をざっと見て、
   自動記録を使い、業務用のツール作成を試行錯誤してます。
 ・ファイルの操作について知りたく、
  このセミナーに取りかかろうとしてます。

 ・必要な項目を、立ち戻って深掘りしたく
  【中級編】がどの講座にあたるのかを教えてください。

以上、宜しくお願いいたします。

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

[12130]基礎講座第1章12 – ドリル

2020-05-24 20:52:08 さざなみさんからの投稿です。

練習問題8について質問です。Dimの2行のあとの式の私の解答は、Range(“C4”)=Range(“B4”)+Range(“B4”)*zeiritu でした。うっかり .Valueを入れ忘れましたがマクロが正常に動きました。.Value が入らないと何が違うのでしょうか。

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

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

2020-05-23 14:54:20 受講生さんからの投稿です。

お世話になっております。
伝票作成マクロを一通り受講したのち、一から記憶を頼りに作成してみました。
挙動については問題なかったので、あとは不必要な部分やセオリーに反している部分があればご指摘いただけると幸いです。
なお一点、並び替えマクロ(プロシージャ名:sorting)にて自動記述後取捨選択箇所の判断がつかずそのまま活用している為(セミナー内に記載されていた例と同じコードが自動で書かれなかったので・・・)、不要な部分とその判断方法をご教示頂けたら嬉しいです。

Option Explicit

Dim G_retu As String
Public Sub main()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    sheetDelete
    
    writeNo
    
    G_retu = "B"
    sorting
    
    sheetcreat

    G_retu = "A"
    sorting
    
    Aclear
    Worksheets("main").Select
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub


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


Private Sub writeNo()
    Dim ws As Worksheet
    Dim lnFmMx As Long
    Dim ln As Long
    
    Set ws = Worksheets("main")
    lnFmMx = ws.Range("B" & ws.Rows.Count).End(xlUp).Row
    For ln = 2 To lnFmMx
        ws.Range("A" & ln).Value = ln - 1
    Next
End Sub
    
    
Private Sub sorting()
    Dim lnMx As Long
    lnMx = Range("B" & Rows.Count).End(xlUp).Row
    Range(G_retu & "1").Select
    ActiveWorkbook.Worksheets("main").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("main").Sort.SortFields.Add2 Key:=Range(G_retu & "1"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("main").Sort
        .SetRange Range("A2:G" & lnMx)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


Private Sub sheetcreat()
    Dim shFm As Worksheet
    Dim shTo As Worksheet
    
    Dim lnFm As Long
    Dim lnFmMx As Long
    
    Dim lnTo As Long
    
    Dim strName As String
    Dim dt As Date
    
    Set shFm = Worksheets("main")
    lnFmMx = shFm.Range("B" & shFm.Rows.Count).End(xlUp).Row
    For lnFm = 2 To lnFmMx
        If strName <> shFm.Range("B" & lnFm).Value Then
            If lnFm > 2 Then
                keisen
            End If
            strName = shFm.Range("B" & lnFm).Value
            Debug.Print strName
            Sheets("main1").Copy After:=Sheets(2)
            Set shTo = ActiveSheet
            shTo.Name = strName
            lnTo = 16
        End If
        dt = shFm.Range("C" & lnFm).Value
        shTo.Range("B" & lnTo).Value = Right(Year(dt), 2)
        shTo.Range("C" & lnTo).Value = Month(dt)
        shTo.Range("D" & lnTo).Value = Day(dt)
        
        shTo.Range("E" & lnTo).Value = shFm.Range("D" & lnFm).Value
        shTo.Range("F" & lnTo).Value = shFm.Range("E" & lnFm).Value
        shTo.Range("H" & lnTo).Value = shFm.Range("F" & lnFm).Value
        
        Select Case shFm.Range("G" & lnFm).Value
            Case Is > 0
                shTo.Range("I" & lnTo).Value = shFm.Range("G" & lnFm).Value
            Case Else
                shTo.Range("J" & lnTo).Value = shFm.Range("G" & lnFm).Value
        End Select
        If lnTo = 16 Then
            shTo.Range("K" & lnTo).Value = shFm.Range("G" & lnFm).Value
        Else
            shTo.Range("K" & lnTo).Value = shFm.Range("G" & lnFm).Value + shTo.Range("K" & lnTo).Offset(-1, 0).Value
        End If
        
        lnTo = lnTo + 1
    Next
    keisen
End Sub

Private Sub keisen()
    Dim lnMx As Long
    lnMx = Range("B" & Rows.Count).End(xlUp).Row
    Range("B16:K" & lnMx).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
End Sub

Private Sub Aclear()
    Dim lnMx
    lnMx = Worksheets("main").Range("A" & Worksheets("main").Rows.Count).End(xlUp).Row
    Debug.Print lnMx
    Worksheets("main").Range("A2:A" & lnMx).Clear
End Sub


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

[12115]複数条件を組み合わせた条件分岐

2020-05-23 10:49:27 受講生さんからの投稿です。

お世話になっております。
動画を見る前に、まず自分でやってみて、答え合わせに動画を見ています。
問題[1]は、出来たのですが、問題[2]でif文を重ねることが思いつかず、下記コードになりました。(>と>=も間違っています)
何度「構文エラー」が出て、修正してやっと出来た!と思い動かしてみたところ、すべて”不合格”となってしまいました。
ギブアップして、動画を見てif文を重ねるのだと納得しました。

時間がかかりますが、何度も演習問題を解くことが、自分の力になると信じて頑張ります。

今後もどうぞよろしくお願いいたします。



Sub gouhi()
Dim gyo
For gyo = 2 To 11
If Range(“C” & gyo).Value = “男性” & Range(“D” & gyo).Value > 80 Then
Range(“H” & gyo).Value = “合格”
ElseIf Range(“C” & gyo).Value = “女性” & Range(“D” & gyo).Value > 70 Then
Range(“H” & gyo).Value = “合格”
Else
Range(“H” & gyo).Value = “不合格”
End If
Next



End Sub

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


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

 

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

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

トップへ