エクセルマクロ 達人養成塾 オンライン講座 質問と回答

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

[8220]エクセルマクロ・VBA「イベントとフォーム」講座の概要

2017-05-26 02:12:04 受講生さんからの投稿です。

本動画中のform_demo.xlsが教材の中にありませんでした。
zipファイル中に動画と同じになるように保存頂けないでしょうか。

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

[8123]コマンドボタン、ラベル、テキストエリアに固有のプロパティ

2017-05-14 08:16:59 受講生さんからの投稿です。

お世話になっております。
フォーム frmTextArea 内で使用されている bNocheck という変数は、値を代入後も使用されていないように思えるのですが、必要なのでしょうか?

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

[8069]Worksheet_Changeイベントのサンプル その1

2017-05-03 13:30:53 受講生さんからの投稿です。

引数がTarget As Excel.Rangeとなっていますが、Target As Rangeとは何か違うのでしょうか?

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

[8040]イベントの連鎖(フラグで制御する方法)

2017-04-24 10:13:11 受講生さんからの投稿です。

質問が2点あります。
1. 0:46頃の動画で、flagsample や main1 のコードが一瞬で表示されるのは、どのようなテクニックを使っているのでしょうか。
2. プレセミナーでフラグの説明があったとのことですが、再帰呼び出しのことでしょうか。再帰についてはサンプルコードのみで、動画での解説はなかったように思えたのですが・・・。
以上2点、よろしくお願いいたします。

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

[7699]イベントの連鎖(フラグで制御する方法)

2017-02-20 00:44:39 受講生さんからの投稿です。

小川先生へ

サンプルコードを書いてくださってありがとうございます(*^^*)
いろんなコードを見て、動かしてみることはとても勉強になりますね。

「1枚のシートに1年分または所定の月の分だけのカレンダーを作成する」の
動画を見直して、Nyuryoku_Calendarをつくりなおしてみました。

Sub Nyuryoku_Calendar() ' ひと月分のカレンダーを作成する

    Dim d As Date
    Dim c As Long
    Dim m As Long
    
    m = Month(Range("A1").Value)
    Range("A1").NumberFormatLocal = "yyyy" & "年" & "m" & "月"
    d = Range("A1").Value
    c = 0
    Range("A1").CurrentRegion.Offset(0, 1).ClearContents 'データーを削除
    
    Do While m = Month(d)
        Range("B1").Offset(0, c).Value = Day(d)
        Range("B2").Offset(0, c) = WeekdayName(Weekday(d), True)
        c = c + 1
        d = DateAdd("d", 1, d)
    Loop
End Sub


小川先生がくださったヒントで

'[2] その月の月初日を日付型変数に格納。
'[3] DateAdd関数で一日づつ翌日の日付を調べる。

のところをどう書けばよいかわからず・・・
(調べてみてDateSerial関数を使うのかもしれないと思い試行錯誤したものの・・・
うまくつかいこなせずでした(+_+))

でも、このままではA1セルに1日以外の日付が入った場合、
カレンダーが月の途中からになってしまうので
イベントの方にも手を加えました(;^_^A

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And IsDate(Target.Value) Then
        If Day(Target) = 1 Then ’A1セルに入った日付が1日だったら
            Nyuryoku_Calendar
        Else
            MsgBox "日付を1日にして入力し直してください"
            Exit Sub
        End If
    End If
End Sub

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

[7681]イベントの連鎖(フラグで制御する方法)

2017-02-17 15:53:34 受講生さんからの投稿です。

小川先生へ

いつもお世話になっております。
現在、イベントの連鎖のところで頭がこんがらがっています(+_+)

練習でカレンダーを作成するマクロを作ってみたのですが、
一体どこにフラグを立てたらよいのかわからず困っています。
コードのチェックをお願いいたします。


☆マクロの内容☆
Sheet1にA1の日付の値が変更されたら
標準ジュールのNyuryoku_Calendarマクロが実行されるWorksheet_Changeイベントを作成しています。
Nyuryoku_Calendarは次の月になるまでB1に日付、B2に曜日が横方向に入っていくマクロです。

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Nyuryoku_Calendar
    End If
End Sub



Dim bFrg As Boolean
Sub Nyuryoku_Calendar() ' ひと月分のカレンダーを作成する
    Dim dDay As Date
    Dim c As Long
    
    dDay = Range("A1").Value
    Range("A1").NumberFormatLocal = "yyyy" & "年" & "m" & "月"
    
    Range("B1:AF2").ClearContents 'B1:AF2の値を削除する
    
    Range("B1").Value = dDay
    Range("B2").Value = WeekdayName(Weekday(dDay), True)
    
    
    Do While Month(dDay + 1) = Month(Range("A1").Value) 'A1に入っている月と同じ間はloopする。
        Range("C1").Offset(0, c).Value = DateAdd("d", 1, dDay) '日付
        Range("C1").Offset(0, c).NumberFormatLocal = "d" '書式をd
        Range("C1").Offset(1, c) = WeekdayName(Weekday(DateAdd("d", 1, dDay)), True) '曜日
        dDay = Range("C1").Offset(0, c).Value
        c = c + 1
    Loop
End Sub

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

[7672]イベントの生じたセルの行番号によって処理を切り分ける

2017-02-15 23:17:05 受講生さんからの投稿です。

小川先生へ

Select Case でしたか!!
1行で記述ができるのがいいですね。

モヤモヤがすっきりしました(^^♪
ありがとうございました。

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

[7667]イベントの生じたセルの行番号によって処理を切り分ける

2017-02-15 00:44:36 受講生さんからの投稿です。

小川先生へ

Targetの範囲を自由に設定できるのがおもしろくて、
いろいろ試しているところです。

複数の離れたセル(例えばC7とC9とC11)をTargetにする場合を考えて作ってみました。
これでもちゃんと動いたのですが
何かもっと良い方法があるような気がしています。

アドバイスをお願いします。


 Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$7" Then
    
    ElseIf Target.Address = "$C$9" Then

    ElseIf Target.Address = "$C$11" Then
    
    Else
        Exit Sub
    End If

    If Target.Row <= 6 Then
        Exit Sub
    End If
    
    If Target.Column <> 3 Then
        Exit Sub
    End If
    
    
    If Target.Value <> UCase(Target.Value) Then
        Target.Value = UCase(Target.Value) '受け取った文字列を大文字に直す
    End If
    
    If Target.Value = "D" Then
        Target.Offset(, 1).Value = "DVD無料"
    ElseIf Target.Value = "C" Then
        Target.Offset(, 1).Value = "CD無料"
    ElseIf Target.Value = "J" Then
        Target.Offset(, 1).Value = "ジャケット無料"
    Else
        Target.Offset(, 1).ClearContents
    End If
End Sub

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

[5302]Workbook_Openイベント

2015-11-20 15:08:18 受講生さんからの投稿です。

小川先生
いつもお世話になっております。
ThisworkbookのOpenイベントを実行させようとしたら「dataファイルが見つかりません。もしかしたらファイルの定義が異なっているかもしれません。」とエラー表示が出ました。この場合、どうやって修正したらよいでしょうか?

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

[2326]オプションボタン、チェックボックス、フレーム、マルチページ

2014-08-31 20:03:23 受講生さんからの投稿です。

チェックボックスが多いと記述が長くなりますが、何か工夫できますか?
変数やoffsetを利用したら良さそうなのですがうまくまとまりません。

下記の例で列が増え、チェックボックスの個数が増えると冗長なプログラムになってしまいます。

If Range("E" & scrMain.Value).Value = "○" Then
chk1.Value = False
Else
chk1.Value = True
End If

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


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

 

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

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

トップへ