私が独立を決めた理由

今までVBAなどのプログラミング集団に所属していた私が独立したきっかけは、自分に振り分けられる仕事が一番多かったからです。「とりあえず私に」という形で仕事が振られてしまい、自分の専門外の範囲にまで仕事が及んでしまったからです。

自分は「アクセス」というソフトウェアは持っておらず専門外なのですが、アクセスのクエリを作成してほしい、などです。
人によってはできるのかもしれません。
ただ、私にはどうしても無理だったので独立を発表しました。
現在は一日で4つ~5つのVBA記事を作成し、6月1日から随時公開されていく形となっています。

それ以外にも、単語登録からショートカットキーから書類の作成までいろいろな便利ライフハックを公開していきます。

何卒、よろしくお願いいたします。

検索は追記にて。

エクセル・単語登録・爆速仕事・要領よく働く・さぼる・さぼれる・サボリーマン・鈍臭いやつ・バカ・自慢・要領の良い人・優秀・効率化・VBA・ファイリング・簡単・誰でもできる・本当は怖い単語登録・バカでもできる・やらないやつはバカ・とっととやれ・仕事術

続きを読む

スポンサーサイト



全シートの選択セルをA1にセットする

全シートの選択セルをA1にセットしてくれます。
これがあると仕事が楽になります。

Sub 全シートの選択セルをA1にセットする
Application.ScreenUpdating = False
    Dim ws As Worksheet
    Dim acws As Worksheet: Set acws = ActiveSheet
    For Each ws In wb.Worksheets
        ws.Activate
        ws.Range("A1").Select
    Next
    acws.Activate
    Application.ScreenUpdating = True
End Sub

このマクロでは最後に選択していたシートに戻ります。



Sub 全シートの選択セルをA1にセットする
Application.ScreenUpdating = False
    Dim ws As Worksheet
    For Each ws In wb.Worksheets
        ws.Activate
        ws.Range("A1").Select
    Next
    Sheets(1).activate
    Save '上書き保存します。いらない場合は削除
    Close '閉じます。いらない場合は削除
    Application.ScreenUpdating = True
End Sub

1枚目に戻ってくれます。
客先に提出するときや複数人が編集するファイルの場合は先頭ファイルにしておくと使用しやすいでしょう。
保存して自動で閉じてくれます。


A1になっていないと「一体どこにカーソルがあるの?」となって編集にも時間がかかってしまいます。「常に最後のセルに追記する」等明確に使用方法が決まっていない場合はA1にまとめておきましょう。



今回の動画はこちらです。

単語登録の恐怖 動画編

【単語登録の恐怖】を動画にしました。
これでもあなたはまだ単語登録を使用しませんか?



これからも定期的に単語登録の恐怖をアップロードさせて頂きます。

エクセルのファイルを綺麗にするマクロ-4

⑧数式を削除するマクロ

数式がいらない書類の数式を削除します。
データが重くなってきたときに確認する場所の中に「数式」があります。
何年も前に提出した請求書なのに「=today()」が入っている。
消費税の計算等が入っていて開くのが重い…などに対応します。

これはアクティブシートの数式を削除します

Sub アクティブシートの数式を削除する()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim nyu As Variant: nyu = ActiveSheet.Range("A1", ActiveSheet.UsedRange)
    ActiveSheet.Range("A1", ActiveSheet.UsedRange) = nyu
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub


全シートの数式を削除します。

Sub 全シートの数式を削除する()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim nyu As Variant
    Dim ws
    For Each ws In Worksheets
        nyu = ws.Range("A1", ws.UsedRange)
        ws.Range("A1", ws.UsedRange) = nyu
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub

⑨最後のセルを修正するマクロ

最後のセルを修正します。

Sub 最後のセル以下を削除するマクロ()
    Dim MaxRow As Long
    Dim MaxCol As Long
    MaxRow = 0
    MaxCol = 0
    With ActiveSheet.UsedRange
        MaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
        MaxCol = .Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
    End With
    ActiveSheet.Range(MaxRow + 1 & ":" & "1048576").Delete
    ActiveSheet.Range(ActiveSheet.Columns(MaxCol + 1), ActiveSheet.Columns(16384)).Delete
End Sub

Sub 全シートの最後のセル以下を削除するマクロ()
    Dim MaxRow As Long
    Dim MaxCol As Long
    For Each ws In Worksheets
        If WorksheetFunction.CountA(ws.UsedRange) <> 0 Then
        MaxRow = 0
        MaxCol = 0
        With ws.UsedRange
            MaxRow = .Find("*", , xlFormulas, , xlByRows, xlPrevious).Row
            MaxCol = .Find("*", , xlFormulas, , xlByColumns, xlPrevious).Column
        End With
        ws.Range(MaxRow + 1 & ":" & "1048576").Delete
        ws.Range(ws.Columns(MaxCol + 1), ws.Columns(16384)).Delete
        End If
    Next
End Sub


エクセルのファイルを綺麗にするマクロ-3

エクセルのファイルを綺麗にするマクロその3です。

⑥プリントエリア外のデータを削除するマクロ
これはアクティブシートの「プリントエリア外」のデータを削除します。

Sub プリントエリア外のデータを削除する()
    Dim pt As String
    pt = ActiveSheet.PageSetup.PrintArea
    Dim r As Long
    r = ActiveSheet.Range(pt).Rows(ActiveSheet.Range(pt).Rows.Count).Row + 1
    ActiveSheet.Range(r & ":" & "1048576").Delete
    Dim c As Long
    c = ActiveSheet.Range(pt).Columns(ActiveSheet.Range(pt).Columns.Count).Column + 1
    ActiveSheet.Range(ActiveSheet.Columns(c), ActiveSheet.Columns(16384)).Delete
End Sub

こらちは全シートのプリントエリア外データを削除します。

Sub 全シートのプリントエリア外のデータを削除する()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim ws As Worksheet
        For Each ws In Worksheets
        Dim pt As String
        pt = ws.PageSetup.PrintArea
        Dim r As Long
        r = ws.Range(pt).Rows(ws.Range(pt).Rows.Count).Row + 1
        ws.Range(r & ":" & "1048576").Delete
        Dim c As Long
        c = ws.Range(pt).Columns(ws.Range(pt).Columns.Count).Column + 1
        ws.Range(ws.Columns(c), ws.Columns(16384)).Delete
    Next
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
End Sub

⑦非表示の名前の定義を削除する

非表示の名前の定義を削除するマクロです。
シートコピーのたびに出てくるダイヤログ撲滅が目的です。

Sub 非表示の名前の定義を削除する()
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Dim nm
    For Each nm In Names
        If nm.Visible = False Then
            On Error Resume Next
            nm.Delete
            On Error GoTo 0
        End If
    Next
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True
End Sub