[[20200805093547]] 『文字列が数値になってしまう』(eiko) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字列が数値になってしまう』(eiko)

いつもお世話になっています。

下記のVBAで動作に問題はありませんが、全支店のデータから支店シートに転記したときに、文字列の数字が数値になってしまい頭の0が消えてしまいます。
どのようにすれば良いのか教えていただきたくお願いいたします。
また、修正すべき点がありましたら重ねてお願いいたします。

Dim ws01, ws02, ws03 As Worksheet

    Dim I, M, lRow, mRow As Long
    Dim kensaku As String

    Set ws01 = Worksheets("全支店")
    Set ws02 = Worksheets("支店")
    Set ws03 = Worksheets("検索")

    mRow = ws02.Cells(Rows.Count, "A").End(xlUp).Row 'シート「支店」の最終行を取得
    ws02.Range("A2:e" & mRow + 1).Clear  'シート「支店」にある前回の結果データをクリアー

    kensaku = ws03.Range("d5")  '検索する支店のパスワードを「kensaku」へ代入
    lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row

    mRow = 2  'シート「支店」に転記する開始行の2行目を設定

    For I = 2 To lRow

        If kensaku = "" Then Exit Sub
        If ws01.Cells(I, "a") = ws03.Range("d5") Then 'シート「全支店」から指定したパスワードに該当する支店を検索する。
            ws02.Range("A" & mRow & ":e" & mRow).Value = ws01.Range("A" & I & ":e" & I).Value  '検索条件に該当する行をシート「支店」に転記する
            mRow = mRow + 1  '転記する行に対して+1加算する。
            Sheets("支店").Select
            Range("a1").Select
        End If

    Next I

    ws02.Range("A1:e" & mRow - 1).Borders.LineStyle = xlContinuous 'シート「支店」に転記されたデータの最終行まで罫線を引く

< 使用 Excel:Excel2013、使用 OS:Windows7 >


転記先の書式を文字列のままにする必要があるので、
ClearでなくClearContentsにしたらどうでしょうか。

(γ) 2020/08/05(水) 10:06


Y様

ご回答ありがとうございます。

やはり修正しても同じ現象が起きてしまいます。
(eiko) 2020/08/05(水) 11:17


γさんが既に書いていますが、転送先の書式は文字列型にしてあるのでしょうか? 標準だと、Excelが勝手に前ゼロを消しちゃいますよ。 または、代入する文字列先頭にシングルクォーテーションを付けるという手もあります。

以下は余談ですが、VBAの型宣言は、カンマ区切りで複数並べた場合、最後の変数以外はVariant型になってしまい、バグの元です。 ちゃんと変数1つずつ型宣言しましょう。

例えば、以下はエラーになってしまいますよ。 こんなつまらないバグを発生させては駄目。

 Sub test()
    Dim I, M, lRow, mRow As Long
    I = 32767 + 1
 End Sub
(???) 2020/08/05(水) 11:39

 >やはり修正しても同じ現象が起きてしまいます。

 なんかまじめにやってないような気が・・・。
 すでにClearした後のシートに対し、ClearContentsしたとか・・・。
 まあ、こういう所の質問者側のやってみましたは信用できないのが普通ですが。

 ってとり早いのが、転記する前に書式を文字列に変えておく。
 これが確実ですかね。

 元々がただの数値で書式設定で変えてあるとか・・・。
 それを質問者側が文字列と思いこんでいるとか、他色々不明な部分があるかと。

 今までの傾向から、質問者側の言う事が信用できないと言う事が多々あるので、
 こんな感じに疑ってしまう。
 普通だったら、これは自分で解決する問題かと。

(BJ) 2020/08/05(水) 12:18


Y様
ありがとうございます。
新しい支店シートを作ったらできました。
本当に助かりました。
感謝いたします。

???様
ご指摘ありがとうございます。
1つずつに書き換えました。

BJ様
元データの書式はもちろん文字列になっていますが、BJ様のおっしゃる通りClearした後のシートに対し、・・というのが当てはまっていたようです。
ただ、何でもかんでも聞いているわけではなく、私なりに一生懸命やって、ネットでいろいろ調べてもわからないので、このサイトに助けを求めています。
皆様からすれば当然のことがわからない私のような素人いますのでご理解いただければと思います。

皆様ありがとうございました。

(eiko) 2020/08/05(水) 13:02


 >ネットでいろいろ調べてもわからないので

 こんなもんネットで調べても出てくると思いませけどね。
 単純に自分のミスなだけので。
 加えて、面倒くさがって、そのままつづけてしまうと言うと言う事ですかね。

 >私のような素人いますので

 私も最初は素人ですよ。
 ただ、原本は原本で取っておき、デフォルトに戻すとかの
 発想の気遣いがあるか無いのか違いだけでは。
 すでに何度も書かれている事ですが、ステップ実行をしながら
 状態を確認するかどうかの違いでもあると思います。
(BJ) 2020/08/05(水) 13:17

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.