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

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

[8111]引数として配列を受け取るFunctionプロシージャ

2017-05-11 23:29:14 受講生さんからの投稿です。

よろしくお願いします。

Chap 04-23

Option Explicit

Sub SetCampaignFlag()
    Dim stKonyuList() As String
    Dim c As Long
    For c = 2 To Range("F65536").End(xlUp).Row
        ReDim Preserve stKonyuList(c - 2)
        stKonyuList(c - 2) = Range("F" & c).Value
    Next
    
    For c = 2 To Range("B65536").End(xlUp).Row
        '以下のIf文の中で、関数からの戻り値を利用している


        '↓のif文がなぜ成り立つのかがピンときません。
  ’Functionプロシージャ戻り値がFalseかTrueならば
  ’ If IsExists(Range("B" & c).Value, stKonyuList) =False Then
       'と書きたくなります。考え方を教えてください。
  ’よろしくお願いします。


        If IsExists(Range("B" & c).Value, stKonyuList) Then
            Range("C" & c).Value = "○"
        Else
            Range("C" & c).ClearContents
        End If
    Next
End Sub
Function IsExists(s As String, ary() As String) As Boolean
    Dim c As Long
    Dim B As Boolean
    B = False
    For c = LBound(ary) To UBound(ary)
        If s = ary(c) Then
            B = True
            Exit For
        End If
    Next
    IsExists = B

    
End Function


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

[8110]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す

2017-05-11 20:26:27 受講生さんからの投稿です。

8100です。
何度も申し訳ございません。
構文の上が切れてしまいました。
貼り直しさせていただきます・・・

Sub kugiritest()
Dim mae
Dim ato
Dim saki
Dim gyo
Dim moji
Dim n

saki = 2

For gyo = 2 To 7
mae = 0
ato = 0
moji = Range("D" & gyo).Value
For n = 1 To Len(moji)
If Mid(moji, n, 1) = "、" Then
mae = ato
ato = n
Range("G" & saki).Value = Range("B" & gyo).Value
Range("L" & saki).Value = Mid(moji, mae + 1, ato - mae - 1)
saki = saki + 1
End If
Next
mae = ato
Range("G" & saki).Value = Range("B" & gyo).Value
Range("L" & saki).Value = Mid(moji, mae + 1)
saki = saki + 1
Next
End Sub

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

[8109]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す

2017-05-11 20:21:20 受講生さんからの投稿です。

小川先生

8100の受講生です。
早速お返事いただきありがとうございます。
>For Next構文のカウンターに使う変数は、構文内で変更しないというのが原則です。
そうなのですね!For Nextはあくまでも順番に1つずつということなのでしょうか。
その点を意識し考えてみたところ、最初の構文ではうまくいかず、小川先生の模範通りMidを使って1文字ずつ調べることに落ち着きました。
自分で手直しした構文を回答と見比べたところ、笑ってしまうほど同じで
(当たり前かもしれませんが・・・)とてもうれしくなりました。

For Nextを抜けた後の記入指示で、私は抜き出す文字数を指定せずに開始場所のみ
指定してそのあと全部と指示していますが、それでも大丈夫でしょうか?
手直しした構文もぜひ見てください!(回答とほぼ同じですが)
よろしくお願いいたします。
Dim saki
Dim gyo
Dim moji
Dim n

saki = 2

For gyo = 2 To 7
mae = 0
ato = 0
moji = Range("D" & gyo).Value
For n = 1 To Len(moji)
If Mid(moji, n, 1) = "、" Then
mae = ato
ato = n
Range("G" & saki).Value = Range("B" & gyo).Value
Range("L" & saki).Value = Mid(moji, mae + 1, ato - mae - 1)
saki = saki + 1
End If
Next
mae = ato
Range("G" & saki).Value = Range("B" & gyo).Value
Range("L" & saki).Value = Mid(moji, mae + 1)
saki = saki + 1
Next
End Sub

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

[8101]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す

2017-05-11 11:47:03 受講生さんからの投稿です。

以下の8100の受講生です。
Tabがうまく反映されず、見にくいマクロになり申し訳ございません・・・
エクセル上ではTab使ってます。。。

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

[8100]セル内の文字列から区切り文字を見つけ、その区切り文字の間にある文字列を切り出す

2017-05-11 11:44:47 受講生さんからの投稿です。

小川先生
お世話になります。初コメです。
全くマクロを書けない状態から、順番に動画で学びここまで理解することができました。
小川先生には感謝しかありません!ほんとにわかりやすいです!!

以下、自力で書いてみたマクロです。
先生と同じように動くのですが、問題点はありませんでしょうか?
Sub kugiri6()
Dim mae
Dim ato
Dim saki
Dim gyo
Dim moji

saki = 2

For gyo = 2 To 7
moji = Range("D" & gyo).Value
For mae = 1 To Len(moji)
ato = InStr(mae, moji, "、")
If ato <> 0 Then
Range("L" & saki).Value = Mid(moji, mae, ato - mae)
mae = ato
saki = saki + 1
Else
Range("L" & saki).Value = Mid(moji, mae)
saki = saki + 1
Exit For
End If
Next
Next
End Sub

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

[8099]データベースとの接続と接続解除について

2017-05-10 16:42:04 多和田 真也さんからの投稿です。

小川先生
ご回答ありがとうございます。ゴールデンウィークが終わって、私も仕事に追われていまして、質問したことを忘れそうになっていました。

こちらでも、検索などで調べていこうと思います。

どうもありがとうございました。

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

[8088]引数として配列を受け取るFunctionプロシージャ

2017-05-07 21:46:10 受講生さんからの投稿です。

SetCampaignFlagのIF文のところで理解に苦しむ。
FunctionプロシージャでBooleanでFalseかTrueとした後

If IsExists(Range("B" & c).Value, stKonyuList)  = False Then
end if

としたくなります。確り怒られますが…
もうすでに戻り値が出ているからと考えればよいのでしょうか?
初歩的な質問で恥ずかしいのですが考え方のヒントが欲しいです。
よろしくお願いします。

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

[8082]データベースとの接続と接続解除について

2017-05-06 13:38:38 多和田 真也さんからの投稿です。

小川先生
確認してみました。Excel2016も、Word 2016も、ともに32ビットでした。
ちなみに、Office365を利用しています。

PCが64ビットなので、64ビット版を探してインストールしないといけないのでしょうか?

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

[8081]発展1講座第2章 - End プロパティの使い方

2017-05-06 11:56:01 受講生さんからの投稿です。

とてもためになる講義をしていただきありがとうございます。いちいちfor next構文の値を変えるのが、面倒だったので、使ってみたいと思います。このマクロを仕事で使っているマクロに追加したいと思います。

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

[8079]データベースとの接続と接続解除について

2017-05-05 12:23:55 多和田 真也さんからの投稿です。

小川先生。いつもお世話になっております。
先日、
>
> テキストP90に記載のある、データリンクプロパティ画面で、Microsoft Jet 4.0 OLE DB Providerが表示されないのですが、このような場合はどうすればよいでしょうか。
>
> 画面のスクリーンショットを添付しておりますので、ご参照いただいたうえで教えていただけましたらありがたいです。

という質問を、お問合せ画面のフォームから質問させていただきました。
----------------------------------------------------------------------------------

ということで、その関連でどのような調査をされたのか?をお知らせください。
それから、お使いの環境についても。
どんな環境なのか?どこまで調査されたのか?によって、回答は変わります。

-----------------------------------------------------------------------------------

とご解答をいただきましたので、関連情報をお知らせいたします。

PC環境は、windows10の64bitマシンで、excelとaccessのバージョンは2016です。

Googleで「Microsoft Jet 4.0 OLE DB Provider」を検索し、http://qiita.com/yaju/items/86314412741deb806366

を参照したのですが、知識不足からか何をしたらよいのかよく理解できないので質問いたしました。

なお、前回の質問はスクリーンショットで画面の状態を見ていただいたうえでご判断いただいたほうが良いか、と思い、お問合せ画面のフォームから質問いたしました。(このフォームからだとファイルの添付ができないので)

他に何か判断に必要な情報があれば、お伝えいただけましたら幸いです。

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

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

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

2017-05-04 15:34:35 受講生さんからの投稿です。

自力でやったのと模範解答を比べると、回数とタイトルと日付をそれぞれ変数に代入してやっていなかったです。そのことに留意して、完成形1~3を作成すると、所要時間が40分→15分に短縮できたので、やり方次第だなと思いました。

あと、現在のwikepediaの書式からsheet1のスタイルにするために、EmEditorを使おうが、Excelを使おうが、上手く行かずに1時間ぐらい色々試して諦めました。やはり、R→Dは難しいですね。

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

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

2017-05-03 16:28:39 受講生さんからの投稿です。

[1]
まず、プロジェクトXの見出しをどこかから見つけてきてください。

[2]
そして、下のリンクからダウンロードできるファイルの
「Sheet1」にあるようなリストを作成してください!
フォローメールセミナー 第13回sf_13_2A7954F1.zip

一度、こういうキレイなリストを作ってから、
マクロを使って、「完成系1」「完成系2」「完成系3」のように
いろいろと組み合わせを変えていきながら、
研究会のメンバーとの勉強会が実りあるものになるための、
ベストなものを探していきます。
フォローメールセミナー 第13回sf_13_2A7954F1.zip
↑↑↑↑をクリックしたら、オンライン講座のホーム画面が表示されましたが、

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

[8070]表を解析して1行のリストを作る、1行のリストを解析して表にする(その1)

2017-05-03 16:01:32 柴田 邦彦さんからの投稿です。

基礎コースフォローアップを受講中です。

[受講方法]
1.動画を見る前に、自力で課題(ドリル)にチャレンジしてみる。
2.動画を見る
3.小川先生のロジックと自分のロジックを比較する。
4.再度、小川先生のロジックでマクロを作成する。
時間は要しますが。上記の4ステップで学習しております

[質問]
一般的にマクロに正解はないと言われますが…
自力で作成したマクロがスマートにできてるかどうかは別として、
マクロの結果が同じであるならば、小川先生の解答と同じでなくても気にする必要ないのでしょうか?
それとも、結果が同じであっても、ロジックの考え方を改めるべきでしょうか?

[質問の意図]
与えられた課題ならば、実際に小川先生のロジックでマクロを組む方が、正解だと考えます。
しかしながら、実際に業務でマクロを自力で作成する場合は、細かく結果を見ながら試行錯誤をして作りあげていくことになり、解答があるわけではありません。(誰かに善し悪しを指導してもらえるわけでもない)
よって、必ずしも、スマートで誰が見ても分かりやすいマクロになるとは限りませんし、結果(ゴール)オーライでマクロを作ることになります。

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

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

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

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

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

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

2017-05-01 18:59:27 受講生さんからの投稿です。

お世話になっております。
フォームボタンの件ですが、以下のようなサブプロシジャーの記述がなくても、Excel2007の場合は、作成されたボタンを右クリックし、マクロの登録を行っても、大丈夫ですよね?
Private Sub CommandButton2_Click()

DeleteSheets

End Sub

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

[8058]各部署からファイルを回収し、記入済データを手元資料に統合その1

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

お世話様になっております。

"オブジェクトは、このプロパティまたはメソッドをサポートしていません。"というエラーが出ます。

この場合のエラーに対するマクロの記入例をご教授いただけませんでしょうか?

ご多忙中まことに恐れ入りますが、ご指導いただけますよう、よろしくお願い致します。



Sub file_get()

Dim moto '←元データ "aget.xls"
Dim saki '←転記先 "記入用.xls"
Workbooks.Open Filename:="C:\Users\NORIAKI\Desktop\sample\記入済ファイル置き場a" & "\" & "aget.xls"
For moto = 2 To 7
If Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value <> "" Then '←"オブジェクトは、このプロパティまたはメソッドをサポートしていません。"
For saki = 2 To 51
If Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("A" & moto).Value Then
Workbooks("記入用.xls").WorkbooksSheets("歳入").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳入").Range("E" & moto).Value
Exit For
End If
Next
Else
Exit For
End If
Next

For moto = 2 To 4 '←行数(元データ)
If Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value <> "" Then
For saki = 2 To 41 '←行数(転記先)
If Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("A" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("A" & moto).Value Then
Workbooks("記入用.xls").WorkbooksSheets("歳出").Range("E" & saki).Value = Workbooks("aget.xls").WorkbooksSheets("歳出").Range("E" & moto).Value
Exit For
End If
Next
Else
Exit For
End If
Next
Workbooks("aget.xls").Close

End Sub

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

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

2017-04-25 20:33:32 受講生さんからの投稿です。

エクセルのバージョン別に教えてくださるのは良いですね。

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

[8052]基礎講座第1章12 - ドリル

2017-04-25 14:55:26 受講生さんからの投稿です。

小川さんお世話になります。
53才の男性ですが、現在パソコン関連の仕事はしていませんが、
この度、マクロを書けるようになりたくて、
勉強しております。
さて、プログラムを書くとき小文字で書くことを推奨しておられましたが、
(””)の中に入れるセル番地は、小文字でいいのですか?

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

[8049]とびとびに存在するデータを拾って加工する

2017-04-25 05:21:01 受講生さんからの投稿です。

小川様
お世話になります。
マクロの質問ではないのですが、動画10分ころにif文を使って確認する場面がありますが、if文をコピーした後Ctrl+↓ だと、最終行まで選択されてしまうと思うのですが、190行までしかコピペされていません。いったいどうやったのですか。それとも最終行までコピペされたのをなにかショートカットで消しているのですか。細かい質問ですみません。

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

[8046]発展1講座第5章 - Sub プロシージャの分割と呼び出し

2017-04-24 19:59:47 受講生さんからの投稿です。

filterメソードと同様に、以下のようにしましたが、
Range("a1").Sort _
key1:=Range("g1").Value, _
order1:=xlAscending, _
Header:=xlYes
セルa1を含む、range(”a1:h21”)全体を並べ替える結果となりましたが、コードとしては問題ないですか?

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

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

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

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

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

[8026]エクセルマクロ・VBAを利用するための推奨設定 - イントロダクション

2017-04-18 21:28:05 齋藤さんからの投稿です。

やる気が湧いてきます。

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

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

2017-04-18 19:54:10 受講生さんからの投稿です。

小人ちゃんがいると聞いた瞬間、なとほどと思いますます、マクロを身に付けたいと思いました。

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

[8018]基礎講座第4章3 - 「For Next構文」を覚える

2017-04-18 14:33:56 受講生さんからの投稿です。

No.8013です。

保険の空白行(改行)ということですね。なるほどです。
空白行を作っておくと、挿入位置も見た目にわかりやすいので良いですね。
迅速なご返信ありがとうございました!

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

[8013]基礎講座第4章3 - 「For Next構文」を覚える

2017-04-18 12:27:29 受講生さんからの投稿です。

No.7946で質問した者です。
本日、4章終えてきました。

空白行=ハコにお団子を入れるための空間、と理解しました。合っていますか?

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

[8009]書式設定の活用方法、書式設定が原因で起こりうる問題とその対処法

2017-04-17 21:53:07 ゲストさんからの投稿です。

これについては、おおむね理解しておりましたが、ユーザー定義など今一度しかり勉強できました。ありがとうございました。

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

[8008]複数の記号の位置を調べて文字列を切り出す

2017-04-17 21:37:36 ゲストさんからの投稿です。

大変てこずりましたが、何とかマスターできました。また明日もう1度やってみようと思います。

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

[8001]基礎講座第4章4 - 「For Next構文」の実習

2017-04-17 12:00:25 受講生さんからの投稿です。

dim=siku
dim=ku

の部分はお団子には含まれないのでしょうか?
なんとなく、dim=○○と、○○=△はセットのような感覚でいたので、片割れがお団子の外にいることに違和感を感じました。
お団子に含めても含めなくてもマクロは動くようなので、気持ちの問題でしょうか・・・

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

[8000]簡単なマクロを書いてみる - 基本編

2017-04-17 10:49:52 ゲストさんからの投稿です。

Option Explictの表示について、ご教示いただきました。マクロがうまく書け、実行できています。ありがとうございました。

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


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

 

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

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

トップへ