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

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

[10712] 式と戻り値3-「式」と「戻り値のデータ型」

2018-11-30 03:46:51 わかやまさんからの投稿です。

小川様

いつもありがとうございます。
以下のコードですが、セルA1には3という数値が入っている状態で実行するとイミディエイトウインドウで3と表示されます。
Sub hairetu()
Dim ary(0) As Range
Set ary(0) = Range(“A1”)
Debug.Print ary(0)
End Sub
上記のコードでは、ary(0)にrange(“A1”)への参照を返していることになるとおもうのですが、なぜセルの値を返すのでしょうか?
range(“A1”)はオブジェクトなので、その参照ということはセルの値を取得するという意味なのでしょうか?

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

[10707]エクセル仕事を劇的に簡単にするDPRフレームワークその2

2018-11-24 22:12:55 めめさんからの投稿です。

理解出来たと 思います。
Dは DATA
PはPROCESS
Rは REPORT
データを スマートに 見やすく リポートし 報告として 残す。***よろしくお願いいたします。めめ
  

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

[10705]エクセル仕事を劇的に簡単にするDPRフレームワークその1

2018-11-23 22:13:50 めめさんからの投稿です。

一つの表で四角になっていて 中身が詰まっている方法が DPRフレーム
ワーク  という事が 分かりました。 あっておりますでしょうか?
よろしくお願いいたします。めめ

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

[10703]タイピングスキルアップ動画5

2018-11-20 21:52:40 めめさんからの投稿です。

早くなると 満足感が出て 世界観が変わるんですネッ❣^^

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

[10700]タイピングスキルアップ動画3

2018-11-19 23:37:20 めめさんからの投稿です。

たたたたたたーん  楽しい でーす!

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

[10699]「30万円の表」と「業務手順書作成術」で成果を挙げた体験について

2018-11-18 12:37:01 受講生さんからの投稿です。

ポータルサイトに「5倍塾での学び方」講座があることを今日初めて気が付きました。
「30万円の表」について、上司との面談のネタ作りに利用されている話を聞き、非常に勉強になりました。
そのことを通して、自分の目標設定や、課題の掘り起こしができると言うことを動画を通して学ぶことができ非常にためになりました。

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

[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 Cacaoさんからの投稿です。

いつもお世話になっております。
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件  [ 動画を見る] 


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

 

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

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

トップへ