SSブログ

エクセル小僧:別のエクセルファイルから文字列をコピーするマクロ【解説編1】 [コンピューター]

別のエクセルファイル(以下、ワークブックと呼ぶ)から、文字列をコピーしてくるマクロのコード解説をします。[猫]

ワークシート側の設定については、

http://blog.so-net.ne.jp/cheese999/2012-12-23

を参照して下さい。

マクロのコードについては、

http://cheese999.blog.so-net.ne.jp/2012-12-24
http://cheese999.blog.so-net.ne.jp/2012-12-25

を参照して下さい。

【解説:文字列からスペースを削除する関数】

01:Function UFDelSP1(Str1 As String, Mode1 As Integer) As String
02:  ' 【機能】文字列からスペースを削除
03:  ' 【引数】
04:  ' Str1 : 文字列(例:" 10. 2. 1. 2")
05:  ' Mode1 : モード
06:  ' (2^0)=1 : 半角スペースを削除
07:  ' (2^1)=1 : 全角スペースを削除
08:  ' 【変数】
09:  Dim DelChr1 As Variant ' 削除する文字
10:  Dim Str2 As String ' 文字列
11:  Dim myMode2(1) As Integer ' モード
12:  Dim i As Integer ' 整数
13:  ' 【コード】
14:  DelChr1 = Array(" ", " ") ' 削除する文字
15:  Str2 = Str1
16:  For i = 0 To 1
17:    If Int(Mode1 / (2 ^ i)) Mod 2 = 1 Then
18:      Str2 = Replace(Str2, DelChr1(i), "") ' DelChr1(i)を削除
19:    End If
20:  Next i
21:  UFDelSP1 = Str2
22:End Function

文字列からスペースを削除するために、Replace()という関数を使います。
この関数は、Replace(元の文字列, 検索する文字列, 変換後の文字列)と設定して
使います。元の文字列からスペースを削除するためには、
Replace(元の文字列, " ", "")のようにして使います。

今回、半角スペースと全角スペースの両方、もしくは、片方を削除したいので、
Mode1という整数の引数に2つの意味を持たせることにします。2の0乗ビットが1
だったら、半角スペースを削除し、2の1乗ビットが1だったら、全角スペースを
削除することにします。

Mode1=(2^0) * 0 + (2^1) * 0 = 0 + 0 = 0 :何も削除しない
Mode1=(2^0) * 1 + (2^1) * 0 = 1 + 0 = 1 :半角スペースを削除する
Mode1=(2^0) * 0 + (2^1) * 1 = 0 + 2 = 2 :全角スペースを削除する
Mode1=(2^0) * 1 + (2^1) * 1 = 1 + 2 = 3 :半角、全角スペースを削除する

For文による繰り返しで処理するため、半角スペースと全角スペースをDelChr1という
Variant型変数にArray()で配列として代入します。(14行目)

16-20行目のFor文では、i=0の時に半角スペース、i=1の時に全角スペースを
Mode1の値によって、削除したり、しなかったりします。

Mode1の各ビットが1かどうかは、次の計算で求められます。

2の0乗ビット = Int(Mode1 / (2^0)) Mod 2
2の1乗ビット = Int(Mode1 / (2^1)) Mod 2

この計算をマクロの17行目で実行し、ビットが1の場合、18行目のReplace()で
文字列中のスペース(半角 or 全角)を空文字列に変換します。

--------------------------------------------------------------------------------------------------------------

FUJIFILM X10の値下げが続いています。
新型は1月7日に発表???
[猫]


FUJIFILM デジタルカメラ X10 1200万画素 2/3型EXR-CMOS F FX-X10

FUJIFILM デジタルカメラ X10 1200万画素 2/3型EXR-CMOS F FX-X10

  • 出版社/メーカー: 富士フイルム
  • メディア: エレクトロニクス



福島のこと、好きにならなくてもいいんです。
忘れてくれなければ。。

富岡のライブカメラが無くなってしまっています。。

猪苗代湖ズ / I love you & I need you ふくしま [MORE ACTION, MORE HOPE]


ヤバイぜ!(5)  コメント(2)  トラックバック(0) 
共通テーマ:日記・雑感

ヤバイぜ! 5

コメント 2

DEBDYLAN

今年もよろしくです(^O^)/

by DEBDYLAN (2013-01-03 07:56) 

cheese999

nice! ありがとうございます。
(^_♡)ノ

DEBDYLANさん、
いつもありがとうございます。
(^_♡)ノ

by cheese999 (2013-01-03 20:51) 

Facebook コメント

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。