[[20230121223934]] 『全角の指定がわかりません』(りお) ページの最後に飛ぶ

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

 

『全角の指定がわかりません』(りお)

Sheet1のセルA1に西暦が入力されています。Sheet2にはシート名が1月〜12月まで並んでいます。
Sheet1のセルA1から月を取り出し、Sheet2から取り出した月のシートをコピーしたいのですが、
Sheet2のシート名が(半角数字+月)だと下記コードで取り出せるのですが、
Sheets(Format(Range("A1").Value, "m月")
Sheet2のシート名が(全角数字+月)だと取り出せません。
どのように変更したら取り出せるか教えてください。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


StrConv
というのが有りましたよ。^^
(隠居Z) 2023/01/21(土) 22:48:51

隠居Zさん ありがとうございます。
StrConv(Sheets(Format(Range("A1").Value, "m月")), vbUpperCase)としてみましたが...
変更点を教えていただけるとたすかります。

(りお) 2023/01/21(土) 23:24:36


参考HPです。

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だったのですね。ありがとうございました。
(りお) 2023/01/22(日) 20:27:40

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.