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

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

[10181]エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

2018-06-30 12:26:08 田中 宏明さんからの投稿です。

IEを使わないという選択がベターだとは思いますが、ついIEを使ってしまう私のIE表示待ち時間処理をご紹介させていただきます。
(講座範疇外のため添削不要です。)

Public Sub Myloop(ByRef ie As Object)
    'IE表示完了の待ち合わせ 2018/6/30
    Dim IEretry   As Boolean: IEretry = False
    Dim RepeatSec As Single:  RepeatSec = Timer

On Error GoTo INVALID

    Do While ie.Busy = True Or ie.readyState < 4 'READYSTATE_COMPLETE
        DoEvents
'        Sleep 200  '200ms停止

        If (Timer - RepeatSec) > 80 Then
            Debug.Print ie.readyState
            MsgBox "サーバーが応答していません。インターネット接続をご確認後、再度実行してください。"
            ie.Quit
            End
        ElseIf (Timer - RepeatSec) > 40 And IEretry = False Then
            'IEの再読み込みは1回限りとする
            IEretry = True
            ie.Refresh
        End If
    Loop

    Do While ie.document.readyState <> "complete"
        DoEvents
'        Sleep 200  '200ms停止
        
        If (Timer - RepeatSec) > 100 Then
            Debug.Print ie.document.readyState
            ie.Quit
            MsgBox "ドキュメントを取得できません。インターネット接続をご確認後、再度実行してください。"
            End
        End If
    Loop

    '念のため確認
    DoEvents
    If ie.Busy = True Or ie.readyState < 4 Then
        Call Myloop(ie)  '再帰呼出
    End If
    
    Exit Sub

INVALID:

    Debug.Print "エラー番号:" & Err.Number & vbNewLine & "エラーの種類:" & Err.Description
    '実行時エラー「書き込みできません。」(70)は想定内なので無視。
    'それ以外はエラーを発生させる。
    If Err.Number <> 70 Then
        Err.Raise Err.Number
    Else
        On Error GoTo 0
        MsgBox "IE読み込み時にエラー発生。処理を継続します。"
    End If

End Sub 

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

[10179]総合問題2-1 Split関数と連想配列

2018-06-29 19:25:39 浦山大さんからの投稿です。

2周目です。問題1まではサラサラと書けるようになってきました。
・ウォッチ式やイミディエイトウィンドウが無いと迷う迷う…。
 あれ、ちゃんと配列に数値入ってないやん(箱が余る)
 あ、連想配列(多次元配列)ってこんな構造してるのか、なるほどな~

こんなのばっかりです(^_^;)
できたら「おし、行った!」ってなるからマクロ頑張ってるようなものですね。新しい発見があることと、リアルタイムにフィードバックが返ってくるため、楽しんでやれています。

問題2については、カウンター変数が多くなりすぎて後で削ったり、この行じゃないのか、じゃあここか~のような感じで適当です。つぶやく回数が増えました。職場の空き時間で一人マクロをやってると「なんだこいつ?」って目でジロジロ見られます。いい兆候ですね笑

結果的に、最後は小川先生の見本に近しくなっていきますが、まだふわふわした感じです。2回目は考え抜いて、最後に動画を拝見してビックリする回にしたいと思います。

最後の動画についても、コメントありがとうございました。
おそらく、次の周回位から余裕が出てくると思います。

動画の解説をパクること、人への解説、試していきます。
1回、問題を見て人に話すように説明してみたら、、、
見事に何もできませんでした…笑
余裕を持てるように回数をこなしながらも、
より高い次元の理解ができるようにしていきます(^_^;)

と、今のところ「あり方」に関してはこんな理解です。。。
これはまだ思考の過程をなぞっているだけのような気もします。

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

[10176]商品ごと、年ごとの販売額合計をピボットテーブルのように出力する(その1)

2018-06-29 16:09:13 わかやまさんからの投稿です。

小川様

いつもありがとうございます。
特に深く考えたわけではなかったのですが、以下のマクロができました。

Sub kotae1()

Columns(“A:F”).Select
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“E2:E231”) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“B2:B231”) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“A1:F231”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
‘ここから自装したマクロ
Dim moto
Dim saki
Dim syoukei
saki = 3
For moto = 2 To 231
syoukei = syoukei + Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“F” & moto).Value
If Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“B” & moto).Value <> Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“B” & moto + 1).Value Then
Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“H” & saki).Value = Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“E” & moto).Value
Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“I” & saki).Value = Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“B” & moto).Value
Workbooks(“コピーpivot_type1.xlsm”).Worksheets(“Sheet1”).Range(“J” & saki).Value = syoukei
saki = saki + 1
syoukei = 0
End If
Next

ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“A2:A231”) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“A1:F231”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With



End Sub

はじめとおわりの操作がないので、すごくシンプルだと思います。
これでもよいでしょうか?

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

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

2018-06-29 11:49:23 受講生さんからの投稿です。

とてもわかりやすい説明

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

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

2018-06-29 11:21:04 受講生さんからの投稿です。

今後のレッスンが楽しみです

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

[10173]苗字と名前を分割して別のセルに投入する

2018-06-29 11:03:58 受講生さんからの投稿です。

とても分かりやすく解説してくださっているので、すぐ理解できたと同時に業務でも早速使ってみようと思いました。
今までは簡単な関数のみ使用していたのですが、早速

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

[10170]複数の記号に挟まれた文字列を取り出す

2018-06-29 00:06:07 morimotoさんからの投稿です。

ほんとinstr関数は最高強力です。クイックヒントでstartと出るので
意識して入力してます。/が2つありましたがすらすらできました。
久々&で挟む場面もあり復習になりました。今度は途中経過なく
一発でできるか検証したいです。ほんとわかりやすいです。

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

[10167]おまけ1-3 Functionプロシージャの活用

2018-06-27 23:22:11 田中 宏明さんからの投稿です。

最近は、大規模なプログラミングを書き上げるテクニックとして、
影響範囲(変数の有効範囲)を意識してコードを書くようになりました。
自己満足ですが、下記のようなことをして遊んでいます。

Sub hoge()
    Dim c As Long
    c = 1
     
    c = func_num(c)
    Debug.Print c
     
    func_num c
    Debug.Print c
     
    sub_num c
    Debug.Print c
End Sub

'Function func_num(num As Long) As Long
'<変更前>参照渡し(実体参照):
'    呼び出し先のプロシージャ内で受け取った引数の値を変えたとき、呼び出し元のプロシージャ内の変数も影響を受ける
'<変更後>値渡し (値参照) :
'    呼び出し先のプロシージャ内で受けだった引数の値を変えても、呼び出し元のプロシージャ内の変数は影響を受けない
Function func_num(ByVal num As Long) As Long
    num = num + 1
    func_num = num
End Function 

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

[10164]おまけ1-3 Functionプロシージャの活用

2018-06-27 22:19:57 田中 宏明さんからの投稿です。

小川先生:

大ヒント、ありがとうございます。
プログラム「zenbu」をステップ実行し、かみしめてみました、
同じ結果が出る方法が複数あるなか、どのやり方を選択すべきかを考えた答えとして、
 自分自身が一貫した方法でコードを書くべき。
という結論に達しました。

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

[10163]おまけ1-5 元データを配列に格納して処理する(その2)

2018-06-27 16:25:44 浦山大さんからの投稿です。

「真似をして動きを覚える」
ということで3日がかりで一通り実施しました。


問題を進めていくことで(類似の部分を繰り返す)、
・入力速度
・キャッチアップの速度
・ショートカットキーを使う場所
・マクロを書く時に気をつけること
一通り感覚を思い出せたと感じています。

基礎編の時に比べたら圧倒的に書いている回数が足りません。
時間にしたら今の5倍はやっていたと思います。
まずは量稽古、熟していくところから進めていきます。

まだまだ、配列、ファンクションプロシージャあたりはうろ覚えです。
何回も克服してきたからでしょうか?
また、楽しく書きながら…何回転目かで掴めるだろう。
と、あまり恐れないで課題に取り組もうとしている自分がいます。
何回も回転させて、知識を血肉にしていきます。

これは、、、マスターしたらむちゃくちゃ強力ですね…。

いつも有意義な動画をありがとうございます\(^o^)/
1回目を終えての感想でした!

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

[10157]おまけ1-5 元データを配列に格納して処理する(その2)

2018-06-26 18:20:50 こんちゃんさんからの投稿です。

動画の追加ありがとうございます!
おかげさまで楽しく学習することができました。

配列、Funciton、なかなかつかいこなせませんでしたが
この動画演習ですっきり明快に理解できました!!
わかってしまえばめちゃめちゃ便利!
シンプルなコードで高速な処理・高いメンテナンス性。
今まで書いていた配列等を使ってないマクロを、もう一度やり直してすっきりさせたくなりますね笑

なにより、これほどのレベルの内容の講座を受講できることに感謝!
引き続きよろしくお願いいたします!

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

[10156]発展1講座第3章 – マクロの自動記録 個人用マクロブック

2018-06-26 05:14:49 受講生さんからの投稿です。

小川様
お世話になります。
小川さんは、部品置き場を別に作っているそうですが、具体的に
どこに、どんなふうに作っているのですか。
よろしくお願いいたします。

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

[10153]補講7-ウォッチ式の活用

2018-06-24 06:23:50 田中 宏明さんからの投稿です。

ウォッチ式がオブジェクト型変数でも使えるとは驚きました。
for each 構文でステップ実行する場合のデバック効率が格段に
良くなりそうです。

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

[10152]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2018-06-24 00:07:36 garuruさんからの投稿です。

ご返信ありがとうございます。

>演習には、パターンをしっかり学ぶということを意識して取り組んでください。
⇒上記アドバイス、ありがとうございます。フォローアップはアウトプットのみのイメージでいたのですが、「パターンを覚える」というインプットの要素もあることを意識します。
今後ともよろしくお願いします。

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

[10150]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2018-06-23 01:56:50 garuruさんからの投稿です。

初投稿となります。よろしくお願いします。問2で、下記の様なプログラムを書いてしましまた。一応やりたいことはできたのですが、「項目の分だけ変数を作ってelseifで処理する」という考えが真っ先に思いつき、しそ巻き無料の問題でも同じ構文でかいていました。

先生の正解に近づくにはロジカルシンキングの様なものが欠如しちるように思えるのですが、何かアドバイス頂けないでしょうか?

 Sub enari()
Dim kek
Dim omi
Dim syu
Dim gre
Dim omihuku

Dim gyo

kek = 0
omi = 0
syu = 0
gre = 0
omihuku = 0

For gyo = 4 To 10
    If Range("I" & gyo).Value = "?????j??" Then
    kek = kek + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "??????????" Then
    omihuku = omihuku + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "?o?Y?j??" Then
    syu = syu + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "???O" Then
    gre = gre + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "????????" Then
    omi = omi + Range("J" & gyo).Value
    
    End If
Next

Range("D4").Value = kek
Range("D5").Value = syu
Range("D6").Value = Range("C6").Value
Range("D7").Value = gre
Range("D8").Value = omi
Range("D9").Value = omihuku

Range("E4").Value = Range("C4").Value + kek
Range("E5").Value = Range("C5").Value + syu
Range("E6").Value = Range("C6").Value
Range("E7").Value = Range("C7").Value + gre
Range("E8").Value = Range("C8").Value + omi
Range("E9").Value = Range("C9").Value + omihuku

End Sub

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

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

2018-06-22 16:26:34 morimotoさんからの投稿です。

もうこうなったらいつもの紙とブレークポイント、F8,
msgboxを作り値の検証をしてやっとわかりました。
C列の暫定勝者とD列の暫定勝者を比較し、D列が勝ったら
RETSU=”D”を設けないとだめですよね。。。
地道にやって理解できまずはほっとしてます。
実務でも同じような場面がありそうでほんとに役立つ講座です。

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

[10146]発展1講座第2章 – プロパティ 従属要素のオブジェクト

2018-06-21 20:21:36 マメコトさんからの投稿です。

『セルはシートの従属要素。シートはブックの従属要素。ならば、セルはブックの従属要素とも言えるのでは?』と考えて、
workbooks(“test.xlsm”).range(“A6”).value=5
と書けば、testに含まれる全てのシートのセルA6が「5」になるかと思って試してみたら・・・怒られました(笑)
階層構造だから、
workbooks(“test.xlsm”).worksheets(“sheet1”).range(“A6”).value=5
と、その階層を順番に下に降りて行かなければならないってことですね。

概念の学習なので、実際にマクロを記載する際に、どのように生きてくるのかのイメージがなかなか湧きません。我慢の時間ですw

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

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

2018-06-20 12:35:11 横山 知明さんからの投稿です。

申し訳ありません。小川先生に、添削していただきたくて、コメントしました。私が、パートさんに仕事をお願いするときに、よく言葉足らずのところがあるので、そういう面が出てしまいました。VBAを受講させてもらい、そういう所も、少しですが改善されていると、自分では考えているので、非常に有難いです。

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

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

2018-06-20 07:16:15 横山 知明さんからの投稿です。

”9502 : 小川慶一の回答 (2018-03-01 09:28:24)”の動画、とても勉強になりました。ありがとうございます。

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

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

2018-06-20 06:56:04 横山 知明さんからの投稿です。

宿題のつもりでなく、自分の復習で作成してみたものを送ります。
よろしくお願いします。

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

[10125]文字列を加工してデータ転記する(その2)

2018-06-17 02:20:43 morimotoさんからの投稿です。

会社で時間があればフォロアップの演習してます。エディッタ画面を当然開いてやりますから、周りから「何してんねん」と声がかかり始めてまあ変なことしてるな~と見られ始めました。どこかの講座でこのようなことになるよってあったような、、、ほんとですね。

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

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

2018-06-17 02:15:34 morimotoさんからの投稿です。

会社の同僚がとあるエクセルデータを整理するため不要な行や列を
copy pasteを地味に繰り返したり枠をつけたり、、、、基礎編の知識
とネットで調べてたらすっと数秒でできるのを作りました。コマンド
ボタンまで付けました。基礎編でもそこそこできるようになるも
のですね。ほんといい講座です。1講がさほど長くないので
取り組みやすいです。

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

[10123]条件に一致するデータを別シートに転記する

2018-06-17 02:08:55 morimotoさんからの投稿です。

疑問が解けました。いろんはVBA本を見てても
worksheets(1)range(“a1”),,,,,て書いていたりrange(“a1”),,,,,とあったりどうちがうのかわかりませんでした。同じ意味なのか違う意味なのか。当たり前かもしれませんがどのシートを実行させるのか
ってことですね。こんな初歩的なことでもぼくにとっては重要です。ほんといい講座です。

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

[10122]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2018-06-17 01:53:17 morimotoさんからの投稿です。

for nextが2段階あることでわかんなくなるんですが、紙に書けば
ほんとわかりました。2つのfor nextを頭の中で同時に動かすから
混乱するようです。1つのfor nextを止めてもう1つのfor nextを動か
していけば見通しがたちました。あとはカウンターをどこで0に
リセットするかですよね。現場の第一線のプログラマーもやはり
紙に書きだしたりすることあるのでしょうか? 

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

[10121]勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

2018-06-17 01:46:51 morimotoさんからの投稿です。

Sumifで余裕、、、まさかマクロ塾ではそんなシンプルでは終わら
ないと思いきやその通りでした。しそ巻き問題といいこの問題と
いいほんととっつきにくいものでした。が画面ばかり見ても仕方
ないのでいつもあるように「紙に書いて」みればよく流れが見えました。わからないときこと紙に書き出せば見えるものですね。

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

[10120]MindManager これ一冊でいますぐ上級者

2018-06-17 01:41:41 受講生さんからの投稿です。

マインドマネージャーについて質問させてください
マインドマネージャーのソフトは1台のみのパソコンにしかインストールできないのでしょうか?
デスクトップパソコンとノートパソコンの2台にインストールして使用したいと考えています

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

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

2018-06-16 08:17:54 横山 知明さんからの投稿です。

簿記の発想で行ってしまうので、どうしても頭が固くなっています。
私が書いた残高計算方法では、
¥FollowMailSeminor_07.txt(添付ファイル)
のように、残高=前残高+借方ー貸方 という発想になってしまいます。
 小川先生のように、より自由な発想法が出来れば良いのですが、
中々うまくいきません。

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

[10117]フォルダ内のサブフォルダとファイルをリストアップ

2018-06-13 23:58:26 こんちゃんさんからの投稿です。

FSO 概念を理解するのに時間かかりましたが、
非常に強力!
紙で管理していた帳票がエクセルだけでできちゃいました。(^^)v
フォルダにあるファイルを指定し、処理して保存する。
保存したら処理日を別のシートに入力。
まさにペーパーレス化!便利になります化!
管理も非常に楽になりました♪
ここまでできるのがなにより楽しいです!♪

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

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

2018-06-13 06:08:06 横山 知明さんからの投稿です。

″プロシージャ内で、別のプロシージャを呼んでくる”という発想が全くなかったので、凄い!と感心しました。

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

[10111]ファイル配布→配布先でのデータ記入→記入済データを手元資料に統合

2018-06-12 22:57:44 マメコトさんからの投稿です。

F5を押して一気にマクロを実行し、指定したフォルダに指定したデータ処理が完了しているファイルがa~iまで出来ていた時は感動しました。
こびとちゃんは優秀ですねw
模範解答と違ったところは、保存するフォルダの直前までを変数basyoに格納しておいて、保存場所の連結を簡明にしたところと、歳入と歳出をforループで回したところです。歳入の方が歳出よりも行数が多いので、歳出ループは無駄削除を10回ほど繰り返しますけど、まいっかと思いまして。
ところで、Selection.Delete Shift:=xlUpは書かなくても処理してくれますが、やはり書いた方が良いのでしょうか。

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


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

 

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

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

トップへ