Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
Split関数に関して
投稿日時: 20/12/27 21:24:54
投稿者: バルバロッサ

いつもお世話になっております。
非常に単純な質問ですが、シート名を読み込んでそれをセルに割り付けることをしています。
 
123456_山田太郎_20201226_1550
といるファイル名があれば
Dim tmp As Variant
  tmp = Split(Sheets(n).Name, "_")
        Cells(1, 1) = tmp(0)
        Cells(1, 2) = tmp(1)
        Cells(1, 3) = tmp(2)
        Cells(1, 4) = tmp(3)
として、
Cells(1, 1)=123456
Cells(1, 2)=山田太郎
Cells(1, 3)=20201226
Cells(1, 4)=1550
と入力することが出来ます。
 
しかし、シート名が
000789_山田太郎_20201226_0020
の場合
同じことをすると
Cells(1, 1)=789
Cells(1, 2)=山田太郎
Cells(1, 3)=20201226
Cells(1, 4)=20
と数値になってしまいます。
 
この場合は、Cells(1, 1)=000789やCells(1, 4)=20と文字列にしたいのですが出来ません。
Str関数をtmpの前に持ってきても、当然出来るわけではなく、どのようにしたら良いのか、悩んでおります。
どうかご教授頂ければ幸いです。
よろしくお願い申し上げます。

回答
投稿日時: 20/12/27 23:24:08
投稿者: WinArrow
投稿者のウェブサイトに移動

2つの方法があります。
 
方法1
セルに代入する前に、セルの表示形式を「文字列」に設定する方法
Range("A1:D1").NumberFormatLocal = "@"
 
方法2
Cells(1, 1).value = "'" & tmp(0)
のように、「'」を前につけてセルに代入する方法
  
 

投稿日時: 20/12/28 10:15:41
投稿者: バルバロッサ

WinArrow様
お返事遅くなり申し訳ありません。
あっさり解決いたしました。大変ありがとうございます。

回答
投稿日時: 20/12/28 11:11:36
投稿者: WinArrow
投稿者のウェブサイトに移動

お役に立てたようで、うれしいです。
 
解決したら、閉じてくださいね

投稿日時: 20/12/28 13:30:20
投稿者: バルバロッサ

大変申し訳ありませんでした。
閉じる事、すっかり失念しておりました。
今後とも宜しくお願い致します。