[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『全角の指定がわかりません』(りお)
Sheet1のセルA1に西暦が入力されています。Sheet2にはシート名が1月〜12月まで並んでいます。
Sheet1のセルA1から月を取り出し、Sheet2から取り出した月のシートをコピーしたいのですが、
Sheet2のシート名が(半角数字+月)だと下記コードで取り出せるのですが、
Sheets(Format(Range("A1").Value, "m月")
Sheet2のシート名が(全角数字+月)だと取り出せません。
どのように変更したら取り出せるか教えてください。
< 使用 Excel:Microsoft365、使用 OS:Windows11 >
(りお) 2023/01/21(土) 23:24:36
https://officek.net/access/a-function/al-string/strconv/
(MK) 2023/01/22(日) 04:34:39
formatしたあとにstrconv
↓
strconvしたあとにformat
と変えたらどうなりますか?
(MK) 2023/01/22(日) 04:39:40
>Sheet1のセルA1から月を取り出し、Sheet2から取り出した月のシートをコピーしたいのですが これがいまいちわかってないのですが、コード自体はsheet1のA1を指しているわけですよね? Sheets([text(asc(a1),"m月")]) Sheets([jis(text(a1,"m月"))]) 最終的にシート名が全角なのか、半角なのか、、、 https://www.moug.net/tech/exopr/0090062.html (稲葉) 2023/01/22(日) 07:05:01
>Sheet2のシート名が(半角数字+月)だと下記コードで取り出せるのですが、
と言うことは、シート名が(全角数字+月)と言うことですよね?
>StrConv(Sheets(Format(Range("A1").Value, "m月")), vbUpperCase) ↓ Sheets(StrConv(Format(Range("A1").Value, "m月"), vbWide))
(半平太) 2023/01/22(日) 09:15:48
strconvしたあとにvbWideだったのですね。
vbWideにstrconvする、という方が適切ですね。
(MK) 2023/01/22(日) 20:47:41
解決したようですが、少し気になったので。
理解できていないうちから一つにまとめないほうがよいですよ。 s = Format(Range("A1").Value, "m月") '日付型データを月部分だけを取り出して"月"をつけるもの '結果は文字列です。 シート名 = StrConv(s, vbWide) 'その文字列を全角に変換する処理 Set ws = Sheets(シート名) 'ワークシートオブジェクト というように順を追って書いて、よく理解するようにしてください。
StrConv関数は、 ・文字列と、 ・変換種類(vbUpperCaseは大文字、vbWideは全角など) の二つの要素を指定して、 変換結果の文字列を受け取るものです。
ですから、 >strconvしたあとにvbWideだったのですね。 といった発言は、ちょっと違います。(既に指摘がありました)
>StrConv(Sheets(Format(Range("A1").Value, "m月")), vbUpperCase)としてみました のように、ワークシートを引数に取ることはありません。対象は文字列です。
いくつかの処理が重なっている場合は、 それぞれについて正確に理解しておかないと活用できません。頑張ってください。 (abc) 2023/01/23(月) 11:36:55
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.