Excel VBA質問箱 IV

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

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


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

【26933】大文字小文字の認識 あいんすと 05/7/24(日) 0:08 質問[未読]
【26934】Re:大文字小文字の認識 かみちゃん 05/7/24(日) 0:34 回答[未読]
【26936】Re:大文字小文字の認識 kobasan 05/7/24(日) 9:21 発言[未読]
【26939】Re:大文字小文字の認識 でれすけ 05/7/24(日) 18:02 回答[未読]
【26940】Re:大文字小文字の認識 ichinose 05/7/24(日) 19:02 発言[未読]
【26944】Re:大文字小文字の認識 あいんすと 05/7/25(月) 0:39 お礼[未読]

【26933】大文字小文字の認識
質問  あいんすと  - 05/7/24(日) 0:08 -

引用なし
パスワード
   テキストボックスに入力した文字を入力されて入れている文字列
が一致したらその文字を別のワークシートに集約マクロを組んだんですが、
大文字、小文字が認識出来ないので、一度そのセル内の文字を大文字に変換したら、処理にかなりの時間が掛かってしまいました。
半角英数の大文字、小文字を関係なく認識する方法ってありますか?

ちなみに最初に作ったマクロがコレです。
'---------------------------------------------------------------

Sub 文字の抽出()

i = 1
j = 1
Do Until i = 65535
  If Left(Cells(i,1),Len(TextBox1)) = TextBox1 Then
    Sht2.Cells(j,1) = Sht1.Cells(i,1)
    j = j + 1
  End If
  i = i + 1
Loop

End Sub

【26934】Re:大文字小文字の認識
回答  かみちゃん  - 05/7/24(日) 0:34 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>半角英数の大文字、小文字を関係なく認識する方法ってありますか?

値をチェックするときに、大文字か小文字に一時的に統一してチェックすればいいのでは?
あとは、検索して見つかったら、Do 〜 Loopを抜け出したら?

 Do Until i = Cells(65536, 1).End(xlUp).Row
  If UCase(Cells(i, 1).Value) Like UCase(TextBox1) & "*" Then
   Sht2.Cells(j, 1) = Sht1.Cells(i, 1)
   Exit Do
   j = j + 1
  End If
  i = i + 1
 Loop

【26936】Re:大文字小文字の認識
発言  kobasan  - 05/7/24(日) 9:21 -

引用なし
パスワード
   ▼あいんすと さん おはようございます。

>半角英数の大文字、小文字を関係なく認識する方法ってありますか?

AutoFilterは、大文字・小文字を区別しないので、抽出'Copy'貼付
でできるのでは。


  With Sht1.Range("A1", Sht1.Cells(65536, 1).End(xlUp))
    .AutoFilter Field:=1, Criteria1:=TextBox1.Text & "*"  '抽出
    .SpecialCells(xlCellTypeVisible).Copy          'Copy
    Sht2.Range("A1").PasteSpecial Paste:=xlAll '貼付
  End With

【26939】Re:大文字小文字の認識
回答  でれすけ  - 05/7/24(日) 18:02 -

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

モジュール先頭で、
Option Compare Text
を宣言すると、大文字と小文字を区別しなくなります。
詳しくは、ヘルプを見てください。

また、違った方法として、ワークシート関数のMatchを利用する方法があります。
Match関数は大文字小文字を区別しません。
現在セルを総当たりでチェックするようにしているようですが、
Match関数を使うと検索部分でも速度が改善されるとおもいます。

一つひとつのセルに逐次アクセスするとかなり速度が低下します。
いったん配列に取り込むなどしてセルへのアクセス回数を減らすと
>一度そのセル内の文字を大文字に変換したら、処理にかなりの時間が掛かってしまいました
この方法についても速度向上が望めるかもしれません。

では。

【26940】Re:大文字小文字の認識
発言  ichinose  - 05/7/24(日) 19:02 -

引用なし
パスワード
   皆さん、こんばんは。

kobasanさんの方法が簡単そうで私は賛成ですが、

でれすけさんの
>
>モジュール先頭で、
>Option Compare Text
>を宣言すると、大文字と小文字を区別しなくなります。
これをやってくれる関数StrCompというのもあります。

Sub test()
  MsgBox StrComp("a", "A", 1)
End Sub

詳細はHELPで確認して下さい。

【26944】Re:大文字小文字の認識
お礼  あいんすと  - 05/7/25(月) 0:39 -

引用なし
パスワード
   多数の回答ありがとうございます。
早速やってみます。それでは、おやすみなさい。

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