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

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

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

2018-11-09 07:41:06 ひろしさんからの投稿です。

小川先生

いつも、お世話になっています。
kadai_pivot2_のよくある型について理解しました。

一つ質問ですが、"if カウンターの値が「小」より大きければ"ですが、
最初のデータが1件しかない場合(あま酒が1件)は、あま酒が読み飛ばされてしまいます?。
状況でカウンターを使い分けるのがベストでしょうか?

勉強不足でスミマセン。
ご教授いただければ幸いです

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

[10685] 式と戻り値6-戻り値を返す式、戻り値を返さない式

2018-11-09 07:09:10 ゲストさんからの投稿です。

小川様

いつもありがとうございます。
他言語で申し訳ないのですが、、、pythonだと関数を定義するときに
returnのあるなしで値がかえったりかえらなかったりします。
def func1(a,b):
c=a+b
func(2,200)

def func2(a,b):
c=a+b
return c
func2(2,200)

func2の場合は202という出力があります。func1の場合はa+bの計算のみ実行するが、結果を表示しないということで、今回のテーマと似ていると感じたので、投稿させていただきました。

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

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

2018-11-05 16:12:09 濵崎武洋さんからの投稿です。

マクロについて、少しづつ勉強しており、構文などについては理解が進んできました・・・
が、実際の作業を効率化させる上で、おそらく初歩的な質問にぶちあたってきました。

実作業的な話ですが、たとえば3つのファイルが同一のフォルダに格納されているとします。
やりたいことは、以下の3つのファイルに同作業を施し、上書き保存することです。


例えばですが、
┗格納されているフォルダを開き、
┗ヘッダー部分に色をつける
┗シート全体の字体を、Meiryo UIにし、フォントを「9」にする。
┗上書き保存して、閉じる。


For Next構文やDo loop構文を使うのかな??、、くらいは分かるのですが、
マクロを実行させるためには、フォルダ内を横断するような場合、プロシージャをどこに書いていけばよいのでしょうか・・
ひとつのファイルに、ボタンなどを設置し、マクロを実行させる場合は分かるのですが、
フォルダ全体に作業を施す場合のイメージが掴めないのです。。

3つのファイルが置いてあるフォルダに、マクロ実行用のファイルを置いてあげて、それを実行させるイメージでしょうか?

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

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

2018-10-23 22:32:24 Takao Kanekoさんからの投稿です。

いつもお世話になっております。
No.09.の問1~4をスムーズに解けました。
基礎編では、初めてのことでかなり難しく感じたことも、今では講義を通して、タイピング操作、変数を活用したり自分のミスに気が付いたりと、明らかにスキルが以前より上がっているように思い、すごく嬉しく思います。

特に、動画の回答でこれは”パターンなので”という箇所の意味が今では完全に理解出来ました。今では基礎編を受講しておいて本当に良かったと思います。まだ発展編1の途中ですが、次は発展編2やその他上級編の講義も受けてさらにスキルアップを目指したいと検討しています。

実務ではまだ応用しきれてませんが、いつか高いリターンが得られることを楽しみにして、どんどんVBAを吸収していきたいと思います。

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

[10663]発展1講座第4章 – For Each構文 演習

2018-10-22 10:41:39 小川慶一さんからの投稿です。

以下の質問をもらいました。

やりたい作業処理は転記することですが、開きたいファイル 10個、開きたいシート50個あります。

この場合、Step_1→開きたいシート50個のシート名を取得する。例えば、WorkSheets.Countで書き出す。
Step_2→取得したシート名を発展2_Chap02-11.xlsのように作業処理すればよいといます。

この場合は静的配列Dim stAry(5) As Stringですが、これを動的配列にして、すべてのファイル10個、すべてのシート50個を連続処理することは可能でしょうか?

つづけて、返信の形で回答さしあげたいと思います。

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

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

2018-10-20 13:06:42 受講生さんからの投稿です。

お世話になっております。
内容的に送信先がこちらではない気もしますが、ご対応お願い致します。
第20回のメールセミナーが届いていません。
再送をお願いいたします。

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

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

2018-10-15 00:09:01 受講生さんからの投稿です。

わかりやすいご説明ありがとうございます。
テバックF8を試したのですが、Range(“f1”).value=8までしか黄色に反転されません。Range(“f2”).value=9以降は反転しませんが、結果はRange(”f3”).value=10までエクセルシートへ反映されています。1つずつ動画のように黄色が反転し、結果が反映されないのは何が悪いのでしょうか。

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

[10653]基礎講座第2章11 – ドリル4

2018-10-14 15:28:04 受講生さんからの投稿です。

お世話になります。メモの使い方で確認させてください。
Range(“C6:E6”).Value = 6 エクセルから左のコードをメモ欄にコピペしてメモを更新しますと
Range("C6:E6").Value = 6の状態になります。正しく更新される方法はないでしょうか。よろしくお願いいたします。

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

[10652]基礎講座第2章11 – ドリル4

2018-10-14 15:19:53 受講生さんからの投稿です。

お世話になります。&について確認させてください。

Range(“C” & gyo & ” : E” & gyo).Value = 8  左のコードでは、gyoの後ろには、&があってから:が続いています。この&がなくても動くのかとおもったのですが、動きません。”C” & gyo ” : E” & gyoでは動かない理由を教えていただけますでしょうか。
宜しくお願いいたします。

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

[10650]Visual Basic Editorの基本用語と使い方 – プロパティウィンドウ

2018-10-13 21:43:20 受講生さんからの投稿です。

Visual Basic Editorは、なんと読んでいるんでしょうか。

ビジュアル ベーシック …エ…

よろしくお願いします

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

[10648]複数セルを同時に編集する際の注意点

2018-10-11 20:56:34 田中 宏明さんからの投稿です。

Worksheet_Change イベントで不具合が出ない方法を習得できました。
これからはイベントプロシージャを積極的に使ってみます。

Private Sub Worksheet_Change(ByVal Target As Range)
    Debug.Print Target.Row & "-" & Target.Column
    
    '複数セル選択時は処理しない
    If Target.Count > 1 Then Exit Sub
    
    '対象行でない場合は処理しない
    If Target.Column <> 2 Then Exit Sub

    'メインの処理(現在時刻を自動出力)
    If Target.Value <> "" Then
        If Target.Offset(, 2).Value = "" Then
            Target.Offset(, 2).Value = Now
        ElseIf Target.Offset(, 3).Value = "" Then
            Target.Offset(, 3).Value = Now
        End If
    End If
End Sub

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

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

2018-10-10 03:53:15 受講生さんからの投稿です。

動画再生時、音量が小さくて聞き取りにくい状態にあります。
「よくある質問の回答」に記載されていることを実行しましたが、解決しませんでした。
特定の動画で、このような現象が起こります。

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

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

2018-10-06 12:20:47 蔀 紀子さんからの投稿です。

小川先生 
お世話になっております。解説見る前に過去の動画を見ながら作成していますが、模範解答のようにきれいにならないこともあります泣
問題4で下記のように作成しましたが、無駄が多いように感じています。(マクロ自体は、問題無く動きましたが…)
マクロを書くときに、シンプルに考える工夫などありますか。よく物事を複雑に考えすぎると言われてしまうので…

Sub mondai4()
    Dim jusyo
    Dim ku
    Dim si
    Dim gyo
    
    For gyo = 2 To 11
        jusyo = Range("C" & gyo).Value
        ku = InStr(jusyo, "区")
        si = InStr(jusyo, "市")
        If ku > 0 Then
            Range("F" & gyo).Value = Left(jusyo, ku)
            Range("G" & gyo).Value = Mid(jusyo, ku + 1)
        Else
            Range("F" & gyo).Value = Left(jusyo, si)
            Range("G" & gyo).Value = Mid(jusyo, si + 1)
        End If
    Next       
End Sub

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

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

2018-10-06 06:56:34 ゲストさんからの投稿です。

小川様

インデントの重要度を再認識いたしました。
それと、修正したコードの中身が気になりました。
これはどれぐらい先に扱えるようになるでしょうか?

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

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

2018-10-06 06:40:04 ゲストさんからの投稿です。

小川様 

添削よろしくお願いいたします。

Sub ikkini()
    sort1
    hontai
    sort2
End Sub


Sub sort1()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Worksheets("main").Range("B2:B" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal  'ワークシートを指定しました
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
    Worksheets("main").Range("A1").Value = "No."
    Worksheets("main").Range("A2").Value = 1
    Worksheets("main").Range("A2").AutoFill Destination:=Worksheets("main").Range("A2:A" & cSaigo), Type:=xlLinearTrend 'ワークシートを指定しました
    heda 'ヘッダーとフッターの設定
End Sub


Sub sort2()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Worksheets("main").Range("A2:A" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'ワークシートを指定しました
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
End Sub


Sub syokyo()
    Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If Left(ws.Name, 4) <> "main" Then 'Left関数を用いました!
            ws.Delete
        End If
        Application.DisplayAlerts = True
    Next
End Sub


Sub hontai()
    syokyo
    Dim cGyo As Long
    Dim cSaigo As Long
    Dim wsMain As Worksheet
    Dim wsNow As Worksheet
    Dim sGyosya As String
    Dim dDate As Date
    Dim cSaki As Long
    Set wsMain = Worksheets("main")
    cSaigo = wsMain.Range("B" & Rows.Count).End(xlUp).Row
    For cGyo = 2 To cSaigo
        If sGyosya <> wsMain.Range("B" & cGyo).Value Then
            If cGyo > 2 Then
                keisen2
            End If
            Sheets("main1").Copy After:=Sheets(Worksheets.Count)
            Sheets("main1 (2)").Name = wsMain.Range("B" & cGyo).Value
            Set wsNow = ActiveSheet
            sGyosya = wsNow.Name
            cSaki = 16
        End If
        wsNow.Range("F2").Value = wsNow.Name
        wsNow.Range("H" & cSaki).Value = wsMain.Range("F" & cGyo).Value
        wsNow.Range("F" & cSaki).Value = wsMain.Range("E" & cGyo).Value
        wsNow.Range("E" & cSaki).Value = wsMain.Range("D" & cGyo).Value
        dDate = wsMain.Range("C" & cGyo).Value
        wsNow.Range("B" & cSaki).Value = Format(dDate, "yy")
        wsNow.Range("C" & cSaki).Value = Format(dDate, "mm")
        wsNow.Range("D" & cSaki).Value = Format(dDate, "dd")
        If wsMain.Range("G" & cGyo) > 0 Then
            wsNow.Range("I" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        ElseIf wsMain.Range("G" & cGyo) < 0 Then
            wsNow.Range("J" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        End If
        If cSaki = 16 Then
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value
        Else
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value + wsNow.Range("K" & cSaki - 1)
        End If
        cSaki = cSaki + 1
    Next
    keisen2
End Sub


Sub keisen2() 'ネットで調べ、シンプルにしました。同じ動作にはなっております。
    Dim cSaigo As Long
    Dim wsNow As Worksheet
    Set wsNow = ActiveSheet
    cSaigo = wsNow.Range("B" & Rows.Count).End(xlUp).Row
    wsNow.Range("B16:K" & cSaigo).Borders.LineStyle = xlContinuous
End Sub


Sub heda()
    With Worksheets("main1").PageSetup
        .CenterHeader = "伝票"
        .CenterFooter = Date
    End With
End Sub

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

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

2018-10-04 04:53:28 ゲストさんからの投稿です。

小川様

再度、手直しいたしました。添削、どうぞよろしくお願いします。

Sub ikkini()
    sort1
    hontai
    sort2
End Sub


Sub sort1()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Worksheets("main").Range("B2:B" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal  'ワークシートを指定しました
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
    Worksheets("main").Range("A1").Value = "No."
    Worksheets("main").Range("A2").Value = 1
    Worksheets("main").Range("A2").AutoFill Destination:=Worksheets("main").Range("A2:A" & cSaigo), Type:=xlLinearTrend 'ワークシートを指定しました
End Sub


Sub sort2()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Worksheets("main").Range("A2:A" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal 'ワークシートを指定しました
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
End Sub


Sub syokyo()
    Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If Left(ws.Name, 4) <> "main" Then 'Left関数を用いました!
            ws.Delete
        End If
        Application.DisplayAlerts = True
    Next
End Sub


Sub hontai()
    syokyo
    Dim cGyo As Long
    Dim cSaigo As Long
    Dim wsMain As Worksheet
    Dim wsNow As Worksheet
    Dim sGyosya As String
    Dim dDate As Date
    Dim cSaki As Long
    Set wsMain = Worksheets("main")
    cSaigo = wsMain.Range("B" & Rows.Count).End(xlUp).Row
    For cGyo = 2 To cSaigo
        If sGyosya <> wsMain.Range("B" & cGyo).Value Then
            If cGyo > 2 Then
                keisen2
            End If
            Sheets("main1").Copy After:=Sheets(Worksheets.Count)
            Sheets("main1 (2)").Name = wsMain.Range("B" & cGyo).Value
            Set wsNow = ActiveSheet
            sGyosya = wsNow.Name
            cSaki = 16
        End If
        wsNow.Range("F2").Value = wsNow.Name
        wsNow.Range("H" & cSaki).Value = wsMain.Range("F" & cGyo).Value
        wsNow.Range("F" & cSaki).Value = wsMain.Range("E" & cGyo).Value
        wsNow.Range("E" & cSaki).Value = wsMain.Range("D" & cGyo).Value
        dDate = wsMain.Range("C" & cGyo).Value
        wsNow.Range("B" & cSaki).Value = Format(dDate, "yy")
        wsNow.Range("C" & cSaki).Value = Format(dDate, "mm")
        wsNow.Range("D" & cSaki).Value = Format(dDate, "dd")
        If wsMain.Range("G" & cGyo) > 0 Then
            wsNow.Range("I" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        ElseIf wsMain.Range("G" & cGyo) < 0 Then
            wsNow.Range("J" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        End If
        If cSaki = 16 Then
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value
        Else
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value + wsNow.Range("K" & cSaki - 1)
        End If
        cSaki = cSaki + 1
    Next
    keisen2
End Sub


Sub keisen2() 'ネットで調べ、シンプルにしました。同じ動作にはなっております。
    Dim cSaigo As Long
    Dim wsNow As Worksheet
    Set wsNow = ActiveSheet
    cSaigo = wsNow.Range("B" & Rows.Count).End(xlUp).Row
    wsNow.Range("B16:K" & cSaigo).Borders.LineStyle = xlContinuous
End Sub

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

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

2018-10-03 21:26:22 ゲストさんからの投稿です。

小川先生

以下の件かなり参考になりました。
仕事上、ばれてしまうことがあるので朝、名前変数等急いで加工してしまいました。(まあそれだけではないですがまだまだ勉強の足りなさを感じております。)

もう一度書かれていた件は振り返り学習をしようと思います。
まだまだ発展まで行きませんが、確実に勉強していきたいと思っております。

丁寧な対応ありがとうございました。

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

[10626]自動記録機能でマクロを作る – Excel2007、2010、2013、2016の場合の手順

2018-10-03 14:30:16 受講生さんからの投稿です。

お世話になります。
以前、マクロの自動記録を試したことがあったのですが、間違った操作も記録されてしまうので、プログラムをしっかり覚えなくてはいけないと感じたことを思い出しました。
しっかり勉強させて戴きますので、宜しくお願い致します。

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

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

2018-10-03 06:38:15 ゲストさんからの投稿です。

エラーが出たのでもう一度送ります。

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

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

2018-10-03 05:06:50 受講生さんからの投稿です。

小川様

添削ありがとうございました。リライトいたしました。再度、添削をお願いいたします。

Sub ikkini()
    sort1
    hontai
    sort2
End Sub


Sub sort1()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Range("B2:B" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
    Worksheets("main").Range("A1").Value = "No."
    Worksheets("main").Range("A2").Value = 1
    Worksheets("main").Range("A2").AutoFill Destination:=Range("A2:A" & cSaigo), Type:=xlLinearTrend
End Sub


Sub sort2()
    Dim cSaigo As Long
    cSaigo = Worksheets("main").Range("B" & Rows.Count).End(xlUp).Row
    Worksheets("main").Sort.SortFields.Clear
    Worksheets("main").Sort.SortFields.Add Key:=Range("A2:A" & cSaigo), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Worksheets("main").Sort
        .SetRange Range("A1:G" & cSaigo)
        .Header = xlYes
        .Apply
    End With
End Sub



Sub syokyo()
    Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If ws.Name = "main" Or ws.Name = "main1" Then
        Else
            ws.Delete
        End If
        Application.DisplayAlerts = True
    Next
End Sub


Sub hontai()
    syokyo
    Dim cGyo As Long
    Dim cSaigo As Long
    Dim wsMain As Worksheet
    Dim wsNow As Worksheet
    Dim sGyosya As String
    Dim dDate As Date
    Dim cSaki As Long
    Set wsMain = Worksheets("main")
    cSaigo = wsMain.Range("B" & Rows.Count).End(xlUp).Row
    For cGyo = 2 To cSaigo
        If sGyosya <> wsMain.Range("B" & cGyo).Value Then
            If cGyo > 2 Then
                keisen
            End If
            Sheets("main1").Copy After:=Sheets(Worksheets.Count)
            Sheets("main1 (2)").Name = wsMain.Range("B" & cGyo).Value
            Set wsNow = ActiveSheet
            sGyosya = wsNow.Name
            cSaki = 16
        End If
        wsNow.Range("F2").Value = wsNow.Name
        wsNow.Range("H" & cSaki).Value = wsMain.Range("F" & cGyo).Value
        wsNow.Range("F" & cSaki).Value = wsMain.Range("E" & cGyo).Value
        wsNow.Range("E" & cSaki).Value = wsMain.Range("D" & cGyo).Value
        dDate = wsMain.Range("C" & cGyo).Value
        wsNow.Range("B" & cSaki).Value = Format(dDate, "yy")
        wsNow.Range("C" & cSaki).Value = Format(dDate, "mm")
        wsNow.Range("D" & cSaki).Value = Format(dDate, "dd")
        If wsMain.Range("G" & cGyo) > 0 Then
            wsNow.Range("I" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        ElseIf wsMain.Range("G" & cGyo) < 0 Then
            wsNow.Range("J" & cSaki).Value = wsMain.Range("G" & cGyo).Value
        End If
        If cSaki = 16 Then
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value
        Else
            wsNow.Range("K" & cSaki) = wsMain.Range("G" & cGyo).Value + wsNow.Range("K" & cSaki - 1)
        End If
        cSaki = cSaki + 1
    Next
    keisen
End Sub


Sub keisen()
    Dim cSaigo As Long
    Dim wsNow As Worksheet
    Set wsNow = ActiveSheet
    cSaigo = wsNow.Range("B" & Rows.Count).End(xlUp).Row
    Range("B16:K" & cSaigo).Borders(xlDiagonalDown).LineStyle = xlNone
    Range("B16:K" & cSaigo).Borders(xlDiagonalUp).LineStyle = xlNone
    With Range("B16:K" & cSaigo).Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Range("B16:K" & cSaigo).Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Range("B16:K" & cSaigo).Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Range("B16:K" & cSaigo).Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Range("B16:K" & cSaigo).Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Range("B16:K" & cSaigo).Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
End Sub

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

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

2018-10-01 21:04:01 蔀 紀子さんからの投稿です。

自分でマクロが書けるようになり成長を実感しています!
前回の問題で勉強したので、今回の問題は何とか解けました!
ただ、小川先生が言っていた、やってはいけない書き方(worksheetsの記述を片方省く)を見事にやってしまい、マクロが思うように実行されず、修正に時間がかかりました(笑)
マクロを書くときにやってしまいがちなミスも学べるので、非常に勉強になります。

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

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

2018-10-01 06:22:21 ゲストさんからの投稿です。

小川様

いつもありがとうございます。添削をお願いいたします。

Sub ikkini()
    sort1
    hontai
End Sub


Sub sort1()
Dim kazu As Long
Dim saigo As Long
Columns(“A:G”).Select
ActiveWorkbook.Worksheets(“main”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“main”).Sort.SortFields.Add Key:=Range(“B2:B317”), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“main”).Sort
.SetRange Range(“A1:G317”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

saigo = Worksheets(“main”).Range(“B65536”).End(xlUp).Row
Worksheets(“main”).Range(“A1”).Value = “No.”
For kazu = 2 To saigo
Worksheets(“main”).Range(“A” & kazu).Value = kazu – 1
Next
End Sub[/code]


Sub syokyo()
    Dim ws As Worksheet
    For Each ws In Worksheets
        Application.DisplayAlerts = False
        If ws.Name = "main" Then
        ElseIf ws.Name = "main1" Then
        Else
            ws.Delete
        End If
        Application.DisplayAlerts = True
    Next
End Sub


Sub hontai()
    syokyo
    Dim gyo As Long
    Dim saigo1 As Long
    Dim wsmain As Worksheet
    Dim wsnow As Worksheet
    Dim gyosya As String
    Dim dt As Date
    Dim saki As Long
    Set wsmain = Worksheets("main")
    saigo1 = wsmain.Range("B65536").End(xlUp).Row
    For gyo = 2 To saigo1
        If gyosya <> wsmain.Range("B" & gyo).Value Then
            If gyo > 2 Then
                keisen
            End If
            Sheets("main1").Copy After:=Sheets(2)
            Sheets("main1 (2)").Name = wsmain.Range("B" & gyo).Value
            Set wsnow = ActiveSheet
            gyosya = wsnow.Name
            saki = 16
        End If
            wsnow.Range("F2").Value = wsnow.Name
            wsnow.Range("H" & saki).Value = wsmain.Range("F" & gyo).Value
            wsnow.Range("F" & saki).Value = wsmain.Range("E" & gyo).Value
            wsnow.Range("E" & saki).Value = wsmain.Range("D" & gyo).Value
            dt = wsmain.Range("C" & gyo).Value
            wsnow.Range("B" & saki).Value = Right(Year(dt), 2)
            wsnow.Range("C" & saki).Value = Month(dt)
            wsnow.Range("D" & saki).Value = Day(dt)
            If wsmain.Range("G" & gyo) > 0 Then
                wsnow.Range("I" & saki).Value = wsmain.Range("G" & gyo).Value
            ElseIf wsmain.Range("G" & gyo) < 0 Then
                wsnow.Range("J" & saki).Value = wsmain.Range("G" & gyo).Value
            End If
            If saki = 16 Then
                wsnow.Range("K" & saki) = wsmain.Range("G" & gyo).Value
            Else
                wsnow.Range("K" & saki) = wsmain.Range("G" & gyo).Value + wsnow.Range("K" & saki - 1)
            End If
            saki = saki + 1
    Next
    keisen
End Sub


Sub keisen()
    Dim saigo2 As Long
    Dim wsnow1 As Worksheet
    Set wsnow1 = ActiveSheet
    saigo2 = wsnow1.Range("B65536").End(xlUp).Row
    Range("B16:K" & saigo2).Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
    End With
End Sub

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

[10609]Visual Basic Editorの基本用語と使い方 – プロジェクトエクスプローラ

2018-09-30 16:25:50 受講生さんからの投稿です。

確認できました。
講座を進められそうです、ありがとうございます。

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

[10607]Visual Basic Editorの基本用語と使い方 – プロジェクトエクスプローラ

2018-09-30 15:49:13 受講生さんからの投稿です。

何度試してもエラー404と表示されてしまいます。
2. plain1.xls
3. plain2.xls

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

[10604]Visual Basic Editorの基本用語と使い方 – プロジェクトエクスプローラ

2018-09-30 14:49:15 受講生さんからの投稿です。

何度試してもエラー404と表示されてしまいます。
2. plain1.xls
3. plain2.xls

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

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

2018-09-28 22:54:42 受講生さんからの投稿です。

この講座を作っていただいてありがとうございます!っていうぐらいわかりやすく、何回も見直してます。

今回の質問は、文字が入った数値ex(13l)(じゅうさんパイプ)を数値のみの(13)にしたい場合うまくinstr関数left関数にしてもうまくできません。

なにが原因かそして改善策をどうしたらいいのかおしえてください。
ちなみにQRコードを読んだときに区切りとして出てくる”l”です。
もしかしたら”パイプ”と読まないのかもしれませんがこの区切りをなくし数値のみにしたいと思ってます。
よろしくお願いいたします。




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

[10598]テキストファイルの操作について

2018-09-27 19:56:45 受講生さんからの投稿です。

外部連携講座は、かなり奥が深いですが、この
テキストファイルの操作は、急にレベルが高く
なったように感じたので、理解を深めるまでに
相当な時間がかかりました。

今では、FileSystemObject TextStreamを使い、
csvファイル(カンマで区切られたデータ)を
読み込んだ直後に配列に代入し、高速にデータ
処理できるまになりました。

達人養成塾に入って、2年半での成果報告です。

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

[10595]基礎講座第3章2 – マクロを書く人のためのショートカットキー操作

2018-09-25 23:16:14 ゲストさんからの投稿です。

小川先生


1点目の操作をミスしておりました。すべて同時に押すと勘違いしておりました。おかげさまで、解決いたしました。
丁寧なご回答、ありがとうございました。

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

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

2018-09-24 22:01:47 受講生さんからの投稿です。

お世話になります。1つ質問をお願いします。最後に紹介のありましたFornext構文についてdaihon0020の練習問題をやっていみました。次回以降の解説を聞けば解決するかもしれないのですが、以下のコードのFor以下ですが、当初は行間を開けずにFor gyo=4to13と入力したところ、構文エラーというメッセージが出ました。
そこで下記のように行間を開けて入力しましたら、VBAを動きました。
ここはレイアウト調整が効かないのでしょうか。よろしくお願いいたします。
Sub ForNext1()
Dim gyo
For gyo = 4 To 13
Range(“b” & gyo).Value = 8
Next

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

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

2018-09-24 12:34:41 蔀 紀子さんからの投稿です。

基礎編第1章が終わりました!
身に付けるのにまだまだ時間がかかりそうです汗

小川先生に質問です。
daihon[4]_kaitoで、税率の値の設定を
 zei = Range(“B1”).Value
として、最後にzei/100としています。
※問題の指示通り50、100…と記入するのでしたら、zei/10でしょうか?ファイルが古いものでしたら、失礼いたしました。

自分で書いたときは、
 zei = Range(“B1”).Value/100
として、マクロを実行しましたら、先生の解答と同じ値が記入されました。
結果は同じでしたが、先生から見て書き方等修正した方が良い点などありますか。とんちんかんな質問で、申し訳ございませんが、よろしくお願い致します。

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


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

 

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

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

トップへ