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

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

123>

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

2021-01-21 12:46:25 マメコトさんからの投稿です。

ファンクションプロシージャを上手に使いこなせれば、以前はグローバル変数として宣言していたものをかなり減らせるのではないかと思いました。
「どのような処理をどの順番で行うか」
を考えることで、その共通的な処理をファンクション化出来ると思いました。

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

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

2020-11-24 16:52:28 受講生さんからの投稿です。

いつもお世話になっております。
基礎編から発展1、フォローアップ等と再度復習し直してきました。
ようやくここまで辿り着きました。
分かったつもりでいた所も改めて見直すと、新たな発見がありとても有意義な時間でした。
今回のCurrentRegionによって、表が配列に投入された時は、衝撃でした。
私も「エクセルマクロ・発展編2演習と回答」の案内メールが確認できませんでした。お手数をお掛けいたしますが、ご確認頂けますでしょうか。
宜しくお願いいたします。

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

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

2020-11-05 05:15:22 たかちゃんさんからの投稿です。

いつもお世話になっております。
「エクセルマクロ・発展編2演習と回答」の案内メールが確認できませんでした。お手数をお掛けいたしますが、ご確認頂けますでしょうか。
宜しくお願いいたします。

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

[12573]補講6-連想配列演習-取引先ごとに取引金額の合計を算出する

2020-11-04 01:13:16 たかちゃんさんからの投稿です。

Dictionaryの代わりに、AdvancedFileter&Sumif使用で描いてみました。
記念に投稿します。(動作確認済み)
最初に、AdvancedFilterをB2から指定した為、愛知販売が2つ出力という謎の動きをしてしまいました。
タイトル行から指定しないとダメです。
同様に、SumIfの合計値の範囲(G列)もG2から指定してしまうと、でたらめな金額が出力されしまい
気づくのにかなり悩みました。
前回の動画コメント12563の先生の参考コードと見比べて、やっと気づきました。

■Chap02ー71 Sheet2の課題

Sub test()
    Dim rg As Range
    Set rg = Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row)
    '会社のリスト書き出し(タイトル行からの指定がポイント)
    rg.AdvancedFilter Action:=xlFilterCopy, copytorange:=Range("I1"), Unique:=True
    
    Dim sList As Range
    Set sList = Range("I2:I" & Range("I" & Rows.Count).End(xlUp).Row)
    Dim s As Range
    Dim c As Long
    c = 2
    'rgの範囲がタイトル行からなので、G列の指定も1行目からする
    For Each s In sList
        Range("J" & c).Value = WorksheetFunction.SumIf(rg, s.Value, Range("G1:G" & Range("G" & Rows.Count).End(xlUp).Row))
        c = c + 1
    Next
End Sub 

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

[12554]連想配列2-Dictionaryオブジェクトの使用例

2020-11-02 02:07:46 たかちゃんさんからの投稿です。

Mac版のエクセルで、ScriptingDictionaryが使えない為、何とか似た様な方法で解決できないか
ずっと考えていました。Collectionオブジェクトという、Dictionaryと似た様なものも調べてみたのですが
Existsメソッドもなく思った様には使えませんでした。(><)
とりあえず、配列を使って書いてみましたので、記念に投稿します。(正常動作確認済み)
Dictionaryが使えない場合、この様な動きのプログラムを書くにはどんな方法が良さそうでしょうか?

他にも、基礎編の「細巻き?」で勉強したFor文を使った方法でも書いてみましたが、名前でソートをする手間が省けるので、配列使った方が少しは早いのかなぁと思いました。

■Chap02-71 Sheet1の課題■

Sub test1()
    Dim sList() As String
    Dim mx As Long
    Dim c As Long
    '重複しないリストをC1に書き出し
    Range("A1:A273").AdvancedFilter Action:=xlFilterCopy, _
    CopyToRange:=Range("C1"), _
    Unique:=True
    
    '上記リストを配列に格納
    mx = Range("C" & Rows.Count).End(xlUp).Row
    For c = 1 To mx
        ReDim Preserve sList(1, c)
        sList(0, c - 1) = Range("C" & c).Value
    Next
    
    Dim rg As Range
    Dim cnt As Long
    '重複回数をカウントし、配列に格納
    For c = LBound(sList, 2) To UBound(sList, 2)
            For Each rg In Range("A1:A273")
            If sList(0, c) = rg.Value Then
                cnt = cnt + 1
                sList(1, c) = cnt
            End If
        Next
        cnt = 0
    Next
    
    '結果をD1に書き出し
    For c = LBound(sList, 2) To UBound(sList, 2)
        Range("D1").Offset(c).Value = sList(1, c)
    Next
    
End Sub
 

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

[12540]モジュールレベル変数との使い分け

2020-10-30 04:00:12 たかちゃんさんからの投稿です。

(感想)
動画1〜動画29を2周してきました。
Functionプロシジャーが、プログラムを読む分には問題ないですが
実際に何も見ないで書くと、あらゆる個所でハマりまくって苦労しました。
(しかも、毎回似たようの所。)動画で解説しているマクロを、自力で書ける様に練習してやっとしっくりきました。

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

[12528]動的配列3-演習

2020-10-23 06:07:22 たかちゃんさんからの投稿です。

最初はUbound(moto,1) の時に 1が返ってくる理由が理解できませんでしたが下のコメントにあった通り、2次元配列で長方形の入れ物ができた状態で
X軸・Y軸を思い浮かべたら分かりました。

Ubound(moto,1) だと1次元なので、X軸(横方向)なので1。
その後、何度か自力で書く練習をしていたら、今はだいぶしっかり理解できたと思います。


コメント10331:
Dim vList(1, 32) As Variant
であれば、横2,縦33の長さの長方形ができあがる、ということです。
[a] 横サイズ2(0から1まで)
[b] 縦サイズ33(0から32まで)

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

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

2020-10-06 17:30:47 受講生さんからの投稿です。

いつもお世話になっております。
どの講座も新しい発見があり、勉強をするのがとても楽しいです。

実は、私も『エクセルマクロ・発展編2演習と回答』の案内メールが確認できません。
お手数ですが、ご確認いただけますでしょうか。
よろしくお願いいたします。

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

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

2020-08-14 21:50:39 受講生さんからの投稿です。

「エクセルマクロ・VBA発展編2」を購入したものです。
私も『エクセルマクロ・発展編2演習と回答』の案内メールが確認できません。
マイページの購入講座一覧にも表示されていません。
購入は大分前なのですが、巣ごもり期間を使ってやっと手がつけられました。
ご確認よろしくお願いします。

[ 続きを読む ]  返信件数: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件  [ 動画を見る] 

[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件  [ 動画を見る] 

[12182]静的配列

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

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

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

Offset(, cnt)

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

よろしくお願いします。

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

[12065]動的配列3-演習

2020-05-12 04:49:34 Takao Kanekoさんからの投稿です。

2次元配列のところで、UBound/LBoundのサイズの戻り値-最小値・最大値、行・列 あれ、あれ?とすごく理解に苦しみましたが、みなさんの投稿と先生の動画で2次元配列のエラー修正をしている所を見れて、さらにグンと理解が増しました。
おかげさまで、配列でマクロがしている処理のイメージが付くようになりました。転職後なかなか時間が作れずいましたが、これから一気に発展2を学び終わらせたいと思います。ありがとうございます。

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

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

2020-05-02 10:36:24 受講生さんからの投稿です。

早速ご対応頂きありがとうございます。
マイページの購入講座一覧に表示されていることを確認致しました。
ありがとうございました。

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

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

2020-05-02 09:52:47 受講生さんからの投稿です。

小川慶一様
こちらから失礼致します。
「エクセルマクロ・VBA発展編2」を購入したものです。
私も、『エクセルマクロ・発展編2演習と回答』の案内メールを受け取っておりません。また、マイページの購入講座一覧にも表示されていないのですが、ご確認いただけますでしょうか?
よろしくお願い致します。

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

[12002] 配列操作の便利関数、オプション、その他

2020-05-01 09:46:38 受講生さんからの投稿です。

a

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

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

2020-04-18 19:20:40 受講生さんからの投稿です。

マイページの購入講座一覧に表示され動画をみることができました。
ありがとうございます。

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

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

2020-04-18 15:07:17 受講生さんからの投稿です。

小川慶一様
「エクセルマクロ・VBA発展編2」を購入したものです。
私も『エクセルマクロ・発展編2演習と回答』の案内メールが送付されてきておりませんし、マイページの購入講座一覧に表示されておりません。
ご確認いただけますでしょうか?

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

[11669]多次元動的配列

2019-11-23 12:31:28 受講生さんからの投稿です。

小川先生お世話になります。

解釈があっているかの確認も含め、配列について質問させていただきます。
1つのExcelに2つのsheetがあり、1つの対比sheetには左に今月、右に前月のデータを横並びにし、差異を対比できるようにしています。データはNo.で管理しています。もう1つのsheetには前月のデータのみを入れています。行はデータNo.で列は項目とし、列10列くらいは毎月変わりませんが、行は5000行以上あり毎月追加削除が発生するので変わります。
発展1を参考に対比sheetに今月データを貼り付けた後に、前月sheetからで該当するデータを転記する。該当するNo.がない場合はデータの下部に転記する。最後に横並びにしたデータを対比し差異に色をつける、というマクロを作りました。ですが、行も列も多くちょっと時間がかかるため、配列を使ってやってみようと思いました。

そこで確認ですが、配列化するのはこの事例でいうと転記元の前月のデータ(5000行10列)を1つの配列とし、該当するNo.の必要な列を、今月列=前月列として転記する。で合っていますか?

転記先の対比sheetの転記列や、検索No.列も別の配列にしたほうがいいのかなど、配列にした方が良い基準がいまいちわからないのですが‥
よろしくおねがいいたします。

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

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

2019-11-12 06:06:51 ゲストさんからの投稿です。

「Enshu」の解答は、どこにありますか

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

[11648]補講3-連想配列によるオブジェクトへの参照設定 – 新しいキーに設定する場合

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

モジュール2では、
For c = 0 To dic.Count – 1
Debug.Print dic.Keys(c), dic.Items(c) ’←★
Next
★「items」と複数形でしたが
モジュール3では、
dic.Add “sp1”, dic.Item(“ws1”).Shapes(2)
dic.Item(“sp1”).Select ’←★★
Debug.Print dic.Item(“sp1”).Width
Debug.Print dic.Item(“sp1”).Height
★★のように「item」という単数形をとるのはどうしてですか。

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

[11641] 配列操作の便利関数、オプション、その他

2019-10-26 17:38:26 ゲストさんからの投稿です。

小川先生

いつもお世話になっております。
発展編2のenshu1.xlsについての添削・質問はこちらで大丈夫でしょうか?

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

[11610]動的配列2-Preserveキーワード

2019-09-30 13:48:26 受講生さんからの投稿です。

発展編2になったとたん、画面/音声とも質が落ちてきています。発展編1と同様に、オンライン用に教材を作り替える予定はないのでしょうか。スクリーンは白く光って文字が見えない場合が多々あり、質問に至ってはほとんど聞き取れません。

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

[11441]静的配列

2019-06-06 05:43:30 受講生さんからの投稿です。

 Sub GetZangyoList_Array_GetList()
    Worksheets("残業3").Activate
    
    Dim stAry(5) As String
    Dim cnt As Long
    For cnt = 0 To 5
        stAry(cnt) = Range("I2").Offset(cnt).Value
    Next
    
    Dim st As String
    For cnt = 0 To 5
        st = stAry(cnt)
        Range("B1").Offset(, cnt).Value = st
        Range("B2:B14").Offset(, cnt).Value = Worksheets(st).Range("C3:C15").Value
    Next
End Sub


について
st = stAry(cnt)と一度変数stに置き換えてから書きだしていますが、
For cnt = 0 To 5
Range(“B1”).Offset(, cnt).Value = stAry(cnt)
Range(“B2:B14”).Offset(, cnt).Value = Worksheets(stAry(cnt)).Range(“C3:C15”).Value
Next
にしてもうまく実行されます。
変数に置き換えるメリットがあれば教えてほしいです。

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

[11439]静的配列

2019-06-05 14:20:46 受講生さんからの投稿です。

小川先生

勘定科目のデータを配列motoに格納して、一列目にある勘定科目をキーにし、情報(科目名や他システムでの科目名)を、任意のセル(他シートを含み、科目名表記が始まるところをActivecellにしてマクロを実行すると、リスト(moto)の何列目の情報を勘定科目から見て何列目に表示したいかをInputboxで変数として格納し、出力をする

というコーディングをしているのですが、motoに格納したデータのあるシート内は成功するのですが他シートだとうまくいきません。

どのコードが原因なのかお教えいただけますでしょうか
よろしくお願いいたします。

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

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

2019-05-11 17:08:57 田中 宏明さんからの投稿です。

配列を研究し、「二次元配列の縦横入替」を知りました。
Excel自体のTranspose関数を呼び出すことで実現。Debug.Printで結果が同じになるので、うまくいっているようです。

実務で活用できそうな事例が思い当たりませんが、第一引数の行番号をRedim Preserveできない場合、縦横入替で 第二引数の行番号をRedim Preserveできることくらいでしょうか。

Sub Sample9_Transpose()
    Dim vList As Variant
    vList = Range("B4").CurrentRegion
    
    Dim c As Long
    'インデックスは1から!
    '第一引数が行番号!
    '表ではタイトルも含まれてしまうのでので注意!
    For c = LBound(vList, 1) To UBound(vList, 1)
        Debug.Print vList(c, 1), vList(c, 2), vList(c, 7)
    Next
    
    Debug.Print vbNewLine
    Dim v2List As Variant
    '二次元配列の縦横を入れ替え
    'インデックスは1から!
    '第一引数が行番号から列番号に変更される!
    v2List = Application.WorksheetFunction.Transpose(vList)
    For c = LBound(v2List, 2) To UBound(v2List, 2)
        Debug.Print v2List(1, c), v2List(2, c), v2List(7, c)
    Next
End Sub

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

[11382]動的配列1-動的配列の基本

2019-05-02 17:19:36 桜井さんからの投稿です。

小川先生

GWに巣ごもりでオンライン講座受講、配列をマスターしたら業務の汎用性が高く実務落とし込みに気合を入れております。

配列に格納したデータをシートに記入する際、
格納したデータの値の小さいものから順に行いたいというのは可能でしょうか。それとも記入したあとセル範囲内をソートすべきでしょうか。

宜しくお願いいたします。

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

[11095]連想配列3-Microsoft Scripting Runtimeのへの参照設定

2019-02-09 23:05:58 牧野千秋さんからの投稿です。

1つめ
Dim LIST As Scripting.Dictionary
Set LIST = CreateObject(“Scripting.Dictionary”)

このとき、”Scripting.Dictionary”に””がつくのはなぜ?
当然小文字で入力しても大文字にならない

2つめ
テキスト通りに書いたのですが
dic.Item(KEY) = dic.Item(KEY) + 1
で型が一致しません、と出ます。
ここは「すでにキーにあるから、配列を1段下げるよ」という意味ではないのでしょうか。

Sub ディクショナリ()
    Dim dic As Scripting.Dictionary
    Set dic = CreateObject("Scripting.Dictionary")
    
    Dim MR As Long
    Dim i As Long
    Dim KEY As String
    Dim NAM As String
    
    MR = Sheets("基礎データ").Range("A" & Rows.Count).Row
        For i = 2 To MR
            KEY = Sheets("基礎データ").Range("A" & i).Value
            NAM = Sheets("基礎データ").Range("B" & i).Value
            
            If dic.Exists(KEY) Then
                dic.Item(KEY) = dic.Item(KEY) + 1
            Else
                dic.Add (KEY), (NAM)
            End If
        Next
    
    Dim VKEYS As Variant
    VKEYS = dic.Keys
        For i = LBound(VKEYS) To UBound(VKEYS)
            Sheets("出力").Range("A1").Offset(i).Value = VKEYS(i)
            Sheets("出力").Range("B1").Offset(i).Value = VKEYS(i)
        Next
    
End Sub

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

[11090]動的配列1-動的配列の基本

2019-02-09 17:34:26 受講生さんからの投稿です。

講座を再度見直して理解を深めようとしています。見直すと「あっ!忘れかけてた」と思わせる内容が時々出てきます。復習しやすいオンライン講座の魅力だと感じています。

講義の内容からかなり脱線したことなのですが発展編2動的配列を復習中に感じたことです。塾長は受講者の質問を聞くとき集中して聞き取っているように感じます。自分は人の話を違う形で受け取ってしまうことや、何を言わんとしているか感じ取って先走って言葉を返してしまうこと多々あります。ダメなことだと思っているがやってしまいます…。塾長は人の話を聞く際、意識していることはありますか?
講座の内容とずれた質問なのでご教授いただければで…。

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

123>

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

 

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

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

トップへ