[[20170218115151]] 『文字の結合』(MYNET) ページの最後に飛ぶ

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

 

『文字の結合』(MYNET)

    Dim CLIENT番号 As String
    Dim CASE番号 As String
    Dim 結合番号 As String
    CLIENT番号 = Worksheets("Input").Range("C2")
    CASE番号 = Worksheets("Input").Range("C3")

    結合番号 = CLIENT番号&”-”&CASE番号         (1)

    結合番号 = CONCATENATE(CLIENT番号, " - ", CASE番号)"  (2)

  結合番号 = CONCAT(CLIENT番号, " - ", CASE番号)"     (3)

(1)はコンパイルエラーになります
(2)(3)は型が一致しません
となります
誤りをしていただけると有難いです

< 使用 Excel:Excel2016、使用 OS:Windows10 >


まず、コードペインから、直接コピーペイストして提示してください。

全角文字の&とか書かれても、それが単なる投稿上のミスなのか、配慮なのか、
もともとそうなのか見分けがつきません。
そんなことで回答者も頭を悩ませたくありません。

よろしくね。

(γ) 2017/02/18(土) 12:11


(1)変数と&の間にスペースがない。また、&が全角になっているので、単なる文字と扱われてます。
(2)CONCATENATEはワークシート上で使う関数なので、マクロでは使えません。マクロでは&するだけだし…。それに、末尾のダブルクォートが余分。
(3)CONCATはSQL文で使う関数なので、マクロ命令ではありません。どこで見つけてきたのやら…。これも末尾のダブルクォートが余分。

というわけで、結合番号 = CLIENT番号 & "-" & CASE番号 と書きましょう。 なお、この程度は自分自身でデバッグし、直すべき内容であり、これを質問してしまうようでは、今後が思いやられますよ。
(???) 2017/02/18(土) 12:21


 かぶりましたがメモしましたので。

 まず、アップされたコードが手打ちではなく 実際のコードのコピペだとしたら
 (1) のみならず (2)も(3)もコンパイルエラーですが?

 結合番号 = CLIENT番号 & "-" & CASE番号

 文字列を連結する場合、 半角の & をつかいます。 かつ その前後には 半角のスペースが必要です。
 当然 " も 半角。 全角の ” は使えません。

 次の CONCATENATE  最後の " が余分ですが、それ以前に、これは 『シート関数』です。
 最後の " を取り除いたとして、型が一致しません ではないでしょ?
 コンパイルエラーになりますよ?

 で、VBAでも多くのシート関数を WorksheetFUnction.関数 として利用可能ですが
 Concatenate も Concat も、残念ながらVBAでは使えません。

( β) 2017/02/18(土) 12:24


さらに。
 
余談めきますが。
  
ExcelVBAのヘルプに
"Visual Basic で使用できるワークシート関数一覧 "
というのがあり、そこに一覧が載っていますが、
CONCATENATE関数は載っていません。
  
たいていのワークシート関数は、
頭にWorksheetFunction.とつければ使えるのですが、
諸事情で使えない関数もあります。
VBAに同等の関数がある場合などです。
 
◆---------
(3)は私のExcel2010ですと、コンパイルエラーになりますが、
CONCAT関数は、2016で導入された関数なんですねえ。
https://dekiru.net/article/14505/
 
それにTEXTJOINなんていうのも増えているんですなあ。
これらがVBAで使えるかどうかは不明(調べていない)。
 

(γ) 2017/02/18(土) 12:36


余談の余談の…。

Excel2016でCONCAT関数が増えた、とありますが、これOffice365ライセンスの人のみなんですよ。
Office2016を単体購入した場合のExcel2016だと、使えないという!(TEXTJOINも駄目)
なんでこういうところで差別するかなぁ、MS。
(???) 2017/02/18(土) 12:44


おお、そうでしたか。ありがとうございます。
ミスリードするところでした。というか、してました。
 
Office365というのに誘導したいのですかねえ。
# 私が使う機会があるかどうかは不明ですが、そんなに良いものなんですかねえ。
# 私は今のもので、十分満足しています。

(γ) 2017/02/18(土) 12:54


Office365契約にすると、毎月課金です。使おうが使うまいが、契約している間は勝手にお金を取られる訳ですね。 単体売りだと1回払い。どちらも2016ではメディアは付いてこなくて、ダウンロードインストールです。

Office365は、契約期間内ならば新バージョンが出たとき、乗り換え無料。いまだと、Excel2016がインストールされます。買い取りは、新バージョンが出たら買い足さないといけない。 しかし今回の関数の違いは、Excelバージョンは同じなので、インチキ商売と思うのですけどねぇ。

とりあえず、今後2016に回答するときは、違いに注意しないといけませんね。
(???) 2017/02/18(土) 13:09


皆様のおかげで解決しました
初心者としても心苦しくも初歩的な質問でお時間をおかけして申し訳ありませんでした
VBAを諦めたい気持ちを奮い立たせていただき感謝しています
特にβさん、???さんいつも丁寧な対応ありがとうございます
(MYNET) 2017/02/18(土) 14:12

母親のPCが2016なので借りて確認しました
Workksheetfunction.CONCATをVBAで使用できました。

VBAならJOINを使用すれば良いだけですが。

(マナ) 2017/02/18(土) 22:08


コメント返信:

[ 一覧(最新更新順) ]


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