質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

1341閲覧

excel VBAにて書式の変更が実行されない

tetrisuehara

総合スコア20

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2021/06/16 05:24

前提・実現したいこと

データの一覧表**(シート名:全体)**を記したシートから該当の割り振ったナンバーに対応したデータを抽出するシート
**(シート名:データ抽出)**へ転記するというマクロをこちらのサイトから引っ張ってきて作成しました。
全体シート
データ抽出シート

###データ転記用ソースコード

VBA

1Sub データ抽出実行() 2Dim ws01, ws02 As Worksheet 3 Dim I, M, lRow, mRow As Long 4 Dim kensaku As String 5 6 Set ws01 = Worksheets("全体") 7 Set ws02 = Worksheets("データ抽出") 8 9 10 mRow = ws02.Cells(Rows.Count, "A").End(xlUp).Row 'シート「データ抽出」の最終行を取得 11 ws02.Range("A3:F" & mRow + 1).Clear 'シート「データ抽出」にある前回の結果データをクリアー 12 13 14 kensaku = ws02.Range("B1") '検索するナンバーを「kensaku」へ代入 15 lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 16 17 mRow = 3 'シート「データ抽出」に転記する開始行の3行目を設定 18 19 20 For I = 2 To lRow 21 22 If ws01.Cells(I, "E") Like "[" & kensaku & "]*" Then 'シート「全体」から指定したナンバーに該当した日付を検索する。 23 ws02.Range("A" & mRow & ":F" & mRow).Value = ws01.Range("A" & I & ":F" & I).Value '検索条件に該当する日報をシート「データ抽出」に転記する 24 mRow = mRow + 1 '転記する行に対して+1加算する。 25 End If 26 Next I 27 ws02.Range("A3:F" & mRow - 1).Borders.LineStyle = xlContinuous 'シート「データ抽出」に転記されたデータの最終行まで罫線を引く 28 29End Sub 30

このままだと、データ抽出シートのすべてのセルにおいて書式設定が以下のように標準形式の表示になるため、以下の記述を入れました。
イメージ説明
イメージ説明

書式設定変更のため追加したソースコード

VBA

1 ws02.Range(Range("A3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "ggge""年""m""月""d""日""(aaa)" '日付 2 ws02.Range(Range("B3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "hh:mm" '時間 3 ws02.Range(Range("C3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "G/標準" '標準 4 ws02.Range(Range("D3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "hh:mm" '時間 5 ws02.Range(Range("E3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "G/標準" '標準 6 ws02.Range(Range("F3"), Cells(Rows.Count, 1).End(xlUp)).NumberFormatLocal = "G/標準" '標準 7 8 9End Sub 10

こちらを新たに追加して、実際の動きを見たのですが、形式の変更がありません。
動きを見ていると、一瞬形式の変更を行ったあと、標準の形式になるような動きを見せました。

試したこと

書式変更のソースが間違っていると思い、新しくワークブックに該当の書式変更のソースを記載して見てみたのですが、そちらは問題なく動きました。
単純なミスな気もするんですが、どうにも見つけられません。
ご指導をお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ws02.Range(Range("F3"), Cells(Rows.Count, 1).End(xlUp))ではCells(Rows.Count, 1).End(xlUp)がA列の最終行を示しているために、A~F列すべてを巻き込んでしまうので、ws02.Range(Range("F3"), Cells(Rows.Count, 5).End(xlUp))のようにそれぞれ列を指定すると直るとおもいます。

投稿2021/06/16 06:16

Usirow

総合スコア364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tetrisuehara

2021/06/16 06:32

お世話になっております。 単純なミスでした・・・・ コピペしてたので完璧に見落としてました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問