Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11313 / 13646 ツリー ←次へ | 前へ→

【16745】文字列の分割 かんきち 04/8/7(土) 23:13 質問[未読]
【16748】Re:文字列の分割 ichinose 04/8/7(土) 23:33 回答[未読]
【16755】Re:文字列の分割 かんきち 04/8/8(日) 20:46 質問[未読]
【16762】Re:文字列の分割 Asaki 04/8/9(月) 9:30 回答[未読]
【16763】Re:文字列の分割 Jaka 04/8/9(月) 11:45 発言[未読]
【16764】Re:文字列の分割 Asaki 04/8/9(月) 12:14 回答[未読]
【16765】Re:文字列の分割 Asaki 04/8/9(月) 12:35 発言[未読]
【16790】Re:文字列の分割 かんきち 04/8/10(火) 0:39 お礼[未読]
【16789】Re:文字列の分割 かんきち 04/8/10(火) 0:37 お礼[未読]

【16745】文字列の分割
質問  かんきち  - 04/8/7(土) 23:13 -

引用なし
パスワード
   セルA1に入力した文字列を","で分割したいと思い下記のように書きました。
これを実行すると「型が一致しません」と出てしまいます。
本ではSplitとメソッドの一番目の文字が大文字になっていることからこれが
原因かと思いましたがSplitと書いても自動的にsplitに変換されてしまいます。
このことが原因なのでしょうか?

Function split_value()
  Dim splited_value() As Variant
  splited_value() = split(Cells(1, 2).Value, ",")
End Function

【16748】Re:文字列の分割
回答  ichinose  - 04/8/7(土) 23:33 -

引用なし
パスワード
   ▼かんきち さん:

>セルA1に入力した文字列を","で分割したいと思い下記のように書きました。
>これを実行すると「型が一致しません」と出てしまいます。
>本ではSplitとメソッドの一番目の文字が大文字になっていることからこれが
>原因かと思いましたがSplitと書いても自動的にsplitに変換されてしまいます。
>このことが原因なのでしょうか?

まず、Split関数がExcel2000以降で有効と言う事はよろしいですか?

↑は、OKだとして・・・、

>
>Function split_value()
  Dim myarray() As String
  myarray() = Split(Cells(1, 2).Value, ",")
  splited_value = myarray()
>End Function

として下さい。

呼び出し側は、一例ですが、
Sub main()
  Dim ans() As String
  ans() = splited_value
  For idx = LBound(ans) To UBound(ans)
   MsgBox ans(idx)
   Next
End Sub

【16755】Re:文字列の分割
質問  かんきち  - 04/8/8(日) 20:46 -

引用なし
パスワード
   お返事ありがとうございました。
>まず、Split関数がExcel2000以降で有効と言う事はよろしいですか?
Excel2002を使用しています。
しかし、Splitと書くとsplitになってしまうため
TextToColumnsで妥協しました。

ところで続けて質問なのですがVBAというよりもエクセルの設定になると思うのですが
現在セル上で右クリックしてカンマ区切りの文字(例:1,2,3,4,5)をコピーすると
自動でカンマが除去されて1 2 3 4 5 と5つのセルに数字が入ります。
セルをダブルクリックして文字をコピーした場合、自動的に分割処理は行われません。

【16762】Re:文字列の分割
回答  Asaki  - 04/8/9(月) 9:30 -

引用なし
パスワード
   こんにちは。

>現在セル上で右クリックしてカンマ区切りの文字(例:1,2,3,4,5)をコピーすると
>自動でカンマが除去されて1 2 3 4 5 と5つのセルに数字が入ります。
通常、このようなことにはならないと思います。
一度、データ >> 区切り位置 でカンマで区切る処理をされたのではありませんか?

もし、問題がなければ、セルごとコピーするか、
区切り位置の設定を再度行って、カンマのチェックを外すとよいのではないでしょうか。

【16763】Re:文字列の分割
発言  Jaka  - 04/8/9(月) 11:45 -

引用なし
パスワード
   >しかし、Splitと書くとsplitになってしまうため

これね、間違って予約語を変数とかプロシジャー名として使ってこうなっちゃった記憶があります。
しかも、以降ずっとそのまんまだったような気がします。
で、どうやって直したかって事ですが、全く覚えていません。
.xlbの削除で直ったか、上書きインストールのどっちかっだったような...。
正解の文字で変数宣言しなおしたのかも??

何が言いたかったかって言うと、予約語をまんま変数名等に使ったりしてはダメですよって事なんです。

【16764】Re:文字列の分割
回答  Asaki  - 04/8/9(月) 12:14 -

引用なし
パスワード
   >>しかし、Splitと書くとsplitになってしまうため
原因は Jaka さんがお書きのとおりだと思いますが、直すには、
どこでもよいので、
Dim Split
と一度宣言して(大文字小文字はきちんと区別して下さい)、これを削除すれば戻ると思います。

ただ、Split() が使用できないとすると、どこかで「自作」のSplitを利用している
ことになるのではと思います。

【16765】Re:文字列の分割
発言  Asaki  - 04/8/9(月) 12:35 -

引用なし
パスワード
   自作関数がある場合は、

VBA.Split()
とすれば呼び出せるようです。

【16789】Re:文字列の分割
お礼  かんきち  - 04/8/10(火) 0:37 -

引用なし
パスワード
   ▼Asaki さん:
>こんにちは。
>
>>現在セル上で右クリックしてカンマ区切りの文字(例:1,2,3,4,5)をコピーすると
>>自動でカンマが除去されて1 2 3 4 5 と5つのセルに数字が入ります。
>通常、このようなことにはならないと思います。
>一度、データ >> 区切り位置 でカンマで区切る処理をされたのではありませんか?
>
>もし、問題がなければ、セルごとコピーするか、
>区切り位置の設定を再度行って、カンマのチェックを外すとよいのではないでしょうか。

おっしゃられるように区切る処理をマクロでやった後にそうなりました。
お恥ずかしい限りです。ありがとうございました。

【16790】Re:文字列の分割
お礼  かんきち  - 04/8/10(火) 0:39 -

引用なし
パスワード
   ▼Asaki さん:
>>>しかし、Splitと書くとsplitになってしまうため
>原因は Jaka さんがお書きのとおりだと思いますが、直すには、
>どこでもよいので、
>Dim Split
>と一度宣言して(大文字小文字はきちんと区別して下さい)、これを削除すれば戻ると思います。

上記のようにいたしましたところ元に戻りました。
こんな仕様があったとは驚きです。
大変助かりました。
ご返答くださったJakaさん、Asakiさんどうもありがとうございました。

11313 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free