GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−VBAでいろんなテクニック
  文字列操作について詳しく知ろう!2
 
■ 文字列操作、検索、比較、文字コード、書式

文字列操作をマスターしよう!

前回に引き続き文字列操作について解説します。

Instr、InstrRev関数

文字列の中から指定した文字列の見つかった位置を返します。"B"をつけることでバイトデータを扱うこともできます。戻り値は見つかった場合、見つかった文字列の位置を、見つからなかった場合"0"をそれぞれ返します。Instr関数は文字を前方から検索し、InstrRev関数は後方から検索します。
(例)
  Debug.Print InStr("1234567890", "345")
  Debug.Print InStr("1234567890", "333")
この例では、"3"、"0"が出力されます。

文字列の比較方法は、Option Compareステートメントを用いてモジュール全体で指定することが可能です。既定(省略した場合)ではBinaryモードでの比較になります。
Binaryモードでは大文字と小文字、半角と全角、ひらがなとカタカナが区別され、ASCIIコード順に比較が行われます。
Textモードを指定することで大文字と小文字、半角と全角、ひらがなとカタカナが区別されず、五十音順に比較が行われます。
Option Compareステートメントを使用した場合、そのモジュール全体で設定が有効になるので注意してください。
(例)
  ' Option Compareの指定なし(Binaryモードでの比較)
  Debug.Print InStr("abcdef", "D")
この場合、"0"を出力します。("D"が見つからなかった)

  ' Option Compare Textの指定あり(モジュール宣言部にて行う、Textモードでの比較)
  Debug.Print InStr("abcdef", "D")
この場合、"4"を出力します。("D"が見つかった)

モジュール全体で指定をしたくない場合は、Instr関数の第4引数で比較方法を指定することも可能です。指定をしない場合、Option Compareステートメントの設定を使用します。また第4引数を指定する場合、必ず第1引数で開始位置を指定する必要があります。
(例)
  Debug.Print InStr(1, "abcdef", "D", vbTextCompare)
この場合、"4"を出力します。

Strcomp関数

文字列を比較した結果を返します。等しい場合は"0"を、第1引数が第2引数未満の場合は"-1"を、第1引数が第2引数を超える場合は"1"をそれぞれ返します。
(例)
  Debug.Print StrComp(Range("A1"), Range("A2"))
この場合、セルA1とセルA2の内容が等しいとき"0"を出力します。比較方法についてはInstr関数を参照してください。

Like演算子

文字列の比較を行い、真または偽を返します。Like演算子の詳しい解説はこちらを参照してください。
演算子について詳しく知ろう!

Chr、Asc関数

Chr関数は指定された文字コードの文字を返します。Asc関数は指定された文字の文字コードを返します。
(例)
  Debug.Print Chr(65)
  Debug.Print Asc("A")
この場合、Chr関数は"A"を、Asc関数は"65"をそれぞれ返します。

ちなみにChr(9)はTabを、Chr(10)はラインフィードを、Chr(13)はキャリッジリターンを表します。Chr(34)は " を表すので次のように使用することも可能です。
(例)
  Debug.Print "Press ""Enter"" Button!"
  Debug.Print "Press " & Chr(34) & "Enter" & Chr(34) & " Button!"
この場合、どちらも"Press "Enter" Button!"を出力します。

Format関数

文字列に書式を設定します。
(例)
  Debug.Print Format(Now, "yyyy.mm.dd ddd hh:mm:ss")
  Debug.Print Format(1234567890, "#,##0")
  Debug.Print Format(1, "00000")
  Debug.Print Format(1, "0.00%")
  Debug.Print Format("ABC", "<")
  Debug.Print Format("abc", ">")
  Debug.Print Format("1234567890", "@@-@@@@-@@@@")
この場合、
  "2000.01.01 Wed 12:00:00"
  "1,234,567,890"
  "00001"
  "100.00%"
  "abc"
  "ABC"
  "12-3456-7890"
等が、それぞれ出力されます。

Format関数の書式はたくさんあり、すべてを網羅することはできませんが、次に代表的な書式を紹介しておきます。
代表的なFormat関数の書式
日付関連
Long Date [2000年1月1日]の形式で表示します
Medium Date [01・Apr・98]の形式で表示します
Short Date [98/11/11]の形式で表示します
/ 日付の区切り記号を表示します
d 1〜31で日付を表示します
dd 01〜31で日付を表示します
ddd 曜日を英語の省略形で表示します(Sun〜Sat)
aaa 曜日を日本語の省略形で表示します(日〜土)
dddd 曜日を英語で表示します(Sunday〜Saturday)
aaaa 曜日を日本語で表示します(日曜日〜土曜日)
w 曜日を数値で表示します(1〜7)
ww その日が1年の何週目であるかを表示します(1〜53)
m 1〜12で月を表示します
mm 01〜12で月を表示します
mmm 月の名前を省略形で表示します(Jan〜Dec)
mmmm 月の名前を省略せずに表示します
q 1年のうちどの四半期に属するかを表示します(1〜4)
g 年号の頭文字を表示します(M,T,S,H)
gg 年号の先頭の1文字を漢字で表示します(明,大,昭,平)
ggg 年号を表示します(明治,大正,昭和,平成)
e 和暦年を表示します(1〜99)
ee 和暦年を2桁の数値で表示します(01〜99)
y 日付を1月1日からの日数で表示します(1〜366)
yy 西暦の最後の2桁を表示します(01〜99)
yyyy 西暦を表示します(0100〜9999)
時刻関連
Long Time [12:00:00PM]の形式で表示します
Medium Time [12:00PM]の形式で表示します
Short Time [12:00]の形式で表示します
時刻の区切り記号を表示します
h 0〜23で時刻を表示します
hh 00〜23で時刻を表示します
n 0〜59で分を表示します
nn 00〜59で分を表示します
s 0〜59で秒を表示します
ss 00〜59で秒を表示します
AM/PM 大文字のAM,PMを付加して12時間制で時刻を表示します
am/pm 小文字のam,pmを付加して12時間制で時刻を表示します
数値関連
0 0が1桁に相当します。指定した桁に数値がない場合0が表示されます
# #が1桁に相当します。指定した桁に数値がない場合何も表示されません
3桁カンマを挿入します
小数点を挿入します
% 数値をパーセント表示します
¥¥ 円記号をつけます
文字列関連
> 大文字にします
< 小文字にします
& 1文字に相当します。対応する位置に文字がない場合は何も表示されず詰められます。右から左の順に埋められます。 
@ 1文字に相当します。対応する位置に文字がない場合はスペースが表示されます。右から左の順に埋められます。 
!& &と同じですが、左から右の順に埋められます。
!@ @と同じですが、左から右の順に埋められます。

以上で文字列操作の解説を終わります。



文字列操作は、さまざまなプログラムの中で使用されます。システムが日本語を扱う以上、文字列操作の習得は必須項目です。

今回のテクニックを応用すれば、ほとんどの場合の文字列操作に対応できると思います。
がんばってマスターしてください。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,