-
三流君の
[コンビニ系HPへ]
[VBA系HPへ]
[ASP系HPへ]
[愚痴系HPへ]
戻 る
確認したい方は、→011.lzh
をダウンロードして、見てください。
下記のような感じで、テストしました。

VBAテストモジュール

<Excel使いに負けた日...ワークシート関数TRIM編>
目次
1.はじめの挨拶
2.それは、土曜出勤のことだった
3.「ExcelのTrim関数でできるよ」そんなバカな、、
4.飲み会でも、技術話?
5.おわりの挨拶
----------------------------------------------------------------------------
/*
* 1.こんにちは
*/
こんにちは、今週も、始まりますね。(平和な一週間でありますように、、、)
今回は、先週土曜日、
Excel使いと戦って、負けた?ことを中心に書いていこうと思います。
*↑隣の部(データサービス)のやさしい部長さんです。
負けたのに、飲み代も1000円だったしねぇ。
原因は、思い込みだったけど、、、う〜ん、くやしい。
前置きは、これくらいにして、そろそろ、始めます。
/*
* 2.それは、土曜出勤のことだった
*/
先週、土曜日、出勤してました。
システム課のメンバー帰ったし、
一人になったので、メールチェックを行う。
*まったく、会社の設備を使って、、、とんでもないヤツだ。。。
おっ、メール来てるジャン。(チョット嬉しい)
なになに、がんばってください、、ハイ、ガンバリマスヨなんとか、
次は、
>SP_CNV.MDBで姓と名の間に
>半角スペースが複数存在(3個以上)する場合
>全角スペースと半角スペースが混在する場合
>全角スペースが複数存在(2個以上)する場合
>はどう処理すれば良いでしょうか?
>お知恵をお貸し下さい。
あっ、やられた、、、データの想定ミスだぁ。。。
確かに、半角スペースが3つだと、全角2つになってしまう。。
例)匿名 希望-->匿名□□希望
となってしまう。
ちぇ、またミスっちゃったなぁ。まぁいっかと思いつつ、帰る準備をする。
隣のデータサービス課(データパンチ関係の仕事してます)に
システム課帰りますと挨拶をしに行きました。2名まだ残ってました。
部長「あかしやき3人で食べに行かない?」と飲みの誘い。
何を思ったか、部長・スパーバイザーさんに、
「データ処理関係で、姓名間全角スペース一個とか指定って、よくあるんですか?」
と聞いたところ、
SP「よくあるよ、半角スペース2個じゃなくて、全角1つにしてとか」
と答えが返ってきました。
ここでやめときゃいいのに、
「半角の変換プログラムサンプルで作ったら、半角3つ入った時、処理できなくて」
と話を続けてしまった、、、
隣に座っていた、部長が一言、
「ExcelのTrim関数でできるよ」
と悪魔のささやき???(ほんとは、親切なので、天使の助言かな?)
これが、長い土曜日の始まりだった、、、
/*
* 3.「ExcelのTrim関数でできるよ」そんなバカな、、
*/
心の中、で、できないでしょ、Trim関数じゃ、、、左右のスペース取るだけじゃないの?
と思い、「trimって、左右のスペース取るだけじゃないの?」と言葉の砲撃?
部長「じゃ、やってみよう」とパソコンの電源を入れる。
しばらくするとWin98のロゴ、
Excelを立ち上げて、データと関数を入れる。
A列 B列
1 匿名 希望 =trim(a1) --> 匿名 希望
2 匿名□□希望 =trim(a2) --> 匿名□希望
あっ、なんで中のスペースが取れるの?と驚く。。。
心の中では、絶対できない、、、飲み代カケてもいいと思っていた。
(カケは勝って負けても嫌いなので、普段はやらないのですが、
そんな私がカケけたくなるほど、自分の中では絶対の自信だった)
動揺しつつ、「半角3つを全角1つにしたいので」と言ってしまった。
Excel使いの部長には、なんでも無い攻撃で、
「=jis(trim(a1))でできる」
とあっさり、返された。
おみごと、、、でした。。。
Excel使いに負けた、、、と思いながら、飲みに行く。。。
枠外開設・グチ --- 思い込みとExcelワークシート関数
Excelワークシート関数とVBAの関数、
同名の関数でも動作が違うみたいです。
みなさんも、変な思い込みは無くして、相手の言葉を良く聞きましょう。
飲み代、カケなくてよかったなぁ、、、ほっとしてます。
だから、テメエは(思い込みの激しいKen3は)、
勝負ごと弱いんだよ。
ハイ、了解。ゴメンネ。
ちなみに、VBAだと、真中のスペース取れません、安心?してください。
Sub Macro1()
Dim a As String
a = "匿名 希望"
MsgBox Trim(a)
End Sub
だと、中のスペースはそのままで、表示されます。
/*
* 4.飲み会でも、技術話?
*/
普通なら、3の敗戦で、マルマガ終わるんだけど、
飲み会でも技術話?の続きありました。
飲んでる時、やさしい部長より、
Excelで不思議な、質問、ありました。
IF(B5>"17:00","残業","")
だと、判断できないと、、、
って、飲んでる時、言われてもなぁ...
B列 C列
5行 18:00 =IF(B5>"17:00","残業","")
6行 18:00 =IF(B6-"17:00">0,"残業","")
7行 18:00 =IF(B7>"17:00"+0,"残業","")
8行 18:00 =IF(B8>time(17,0,0),"残業","")
5行目の=IF(B5>"17:00","残業","")
ですんなり、できないみたいです。
なんか、あってる?ぽいけどなぁ。
で、
苦肉の策?で、
6行目の=IF(B6-"17:00">0,"残業","")
みたいに、17時を引いて、0以上だったら
に式を変更したらうまくいったらしいです。
また、7行目みたいに、+0(なんで0たすの?)
を入れると、思い通り、動作します。
その時、飲んでたので(言い訳?)
#17:00#と囲えば、=IF(B5>#17:00#,"残業","")
日付型になるからOKでは
と答えたのですが、本日、やってみたら、これは、ウソでした。
*#はVBAだけみたいです、、、ワークシート上はエラーになります。
お返しをしようと、#で囲うを教えたんだけど、、また、裏目でした。
だから、確認してから、答えようよ、、はいはい。。。
話は、戻って、
キレイ?に書くと、8行目のTime関数を使って、
時間(シリアル値)を返して、比較するのが良いみたいです。
"17:00"だけだと、時間と文字列を比較するので、ダメ。
b5(時間) - "17:00"(文字列)は、自動的に時間の引き算してくれるのでOK
"17:00"(文字列) + 0(数値)は、なぜか結果が時間になる?のでOK
お行儀よく書くなら、Time関数を使ってtime(時,分,秒)を使います
*VBAのタイム関数とは、動作が違うので、注意してください。
枠外解説・グチ -- Excel97...もう少し賢ければ、、
Excel2000だと、=IF(B5-"17:00">0,"残業","")で良いかもしれないので、
インストールしている人は、結果、教えてください。
ken3のExcel97では、ダメでした。
VBA 日付型 (Date) ヘルプから、引用
---
日付型 (Date) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。西暦
100 年 1 月 1 日〜西暦 9999 年 12 月 31 日の範囲の日付と、0:00:00 〜 23:59:59 の
範囲の時刻を表すことができます。日付型の変数には、日付リテラルとして認識可能な任
意の値を代入できます。日付リテラルの形式は、#1993 January 1# または
#93 Jan 1 # のようにシャープ記号 (#) で囲む必要があります。
ワークシート関数 TIME のヘルプから、引用
----
指定された時刻に対応するシリアル値を返します。計算結果のシリアル値は、0 〜 0.
99999999 の範囲にある小数値で、0:00:00 (午前 0 時) から 23:59:59 (午後 11 時
59 分 59 秒) までの時刻を表します。
書式
TIME(時, 分, 秒)
時 時を表す数値を 0 〜 23 の範囲で指定します。
分 分を表す数値を 0 〜 59 の範囲で指定します。
秒 秒を表す数値を 0 〜 59 の範囲で指定します。
使用例
ダブル クォーテーション (") は、戻り値が文字列であることを表します。
TIME(12,0,0) = 0.5 (正午に対応)
TIME(16,48,10) = 0.700115741 (午後 4 時 48 分 10 秒に対応)
/*
* 5.おわりの挨拶
*/
長い?土曜日が終わって、日曜日、メルマガ書いてます。
ぜったいできる、、、と言って飲み代かけなくて、
よかったなぁ、、の結果レポートでした。
*何かの参考になれば、幸いです。。。
なんか、疲れが貯まったような。
まぁ、飲み代1000円で、いろいろな発見あったし、良かったかな?
でも、飲んでる時は、楽しい話をしましょうよ、、技術話じゃなくて。
やさしい部長に感謝の三流プログラマーKen3でした。。。
では、また。。。 次回は、Excel使いに勝った話をしたいですねぇ。
*今度は、今風・流行り言葉のリベンジだぁ〜、、、と変な気合を入れる。
返討ちにあわないでね、、、はい。。。
...
■番外編 愚痴系で書いてた今日の一品 (短いサブ関数など)
2000/05/13 SQL Count関数を使ってみる
2000/05/11 Access97 標準関数Midなどが使えない
2000/05/09 SendObjectのエンコード
2000/05/08 クエリーで〜以外とは
2000/04/27 Imagingコントロールを使ってみた
2000/04/25 Excel97 VBA イベントなど
2000/04/24 Access97で複数のプリンタを切替えて使用
2000/04/20 書式付きエクスポート DoCmd.OutputToで、できます
2000/04/19 Access97でExcel形式へExport時に書式設定を行いたい
2000/04/13 Access97でOutlook97/98とリンクする方法
2000/04/13 VBA Nameステートメント
2000/04/04 Accessでキー取得
2000/04/04 AccessでFile参照ダイアログ?
2000/04/03 縦書用数値変換改良
2000/04/01 Access Err テーブルを消したい
2000/03/31 縦書き数値、どうしてますか?
2000/03/29 VBA 手抜きで、処理後、explorerを開く
2000/03/28 Access --> Word へデータ
2000/03/24 名前一覧Excelの機能で、同じことできました
2000/03/23 Excel97 VBA セルに付けた名前一覧を作成する
2000/03/21 Excel セルに名前付け
2000/02/25 iniFileを読む GetPrivateProfileString
2000/02/15 Excel VBA Rangeオブジェクトとサンプル
2000/02/14 Access97 SizeMode/OLEサイズ で画像調整
2000/02/10 Access97 Pictureプロパティとサンプル
2000/02/09 Access97 集計クエリーで重複値をハジク
2000/02/07 Access97 サブフォームへ値をセット
2000/02/04 Access97 コントロールソース、チョットした使用法
2000/02/01 Access97 フォームフッター
2000/01/18 Access97 now()関数で有効期限処理、、、
_/_/
_/_/
_/_/
_/_/
_/_/
三流君のHP主な飛び先
人気ページ/アクセスランキング
↑一週間の訪問者数と人気のページを表示してます
その他、宣伝ページです
・[
アンケート/ポイント]などで月500円を必死に稼いでます(笑)
・[
SOHO/在宅プログラマー/派遣]の話題、Webエントリー後の反応など
・[
出会い系]のお話、自分で出会い系のシステム作れないか?探ったお話
・[
ネットで小金を稼げるか?]実験中だが成果は無し
※あとは、[パソコン関係の書籍]や[ゲームソフト]、
[パソコンパーツ]
をバナーから売ろうとするけど、
なかなかうまくはいかないよね(笑)
|
←パソコンの技術系の書籍を探しているなら
コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店
※種類が豊富で探し易い※在庫ありが48時間以内発送
|
プログラム系、流れや基本系?
[No.4 プログラムって?流れって?]
[No.5 変数・乱数・定数]
[No.8 配列とArray関数]
[No.9 If文で範囲のチェック]
[No.10 Select Case XX To XX と Is >= XX]
[No.11 InputBox関数で簡単な値を受け取る]
[No.12 入力結果の判断いろいろ]
[No.19 Exit Subで途中退場する]
[No.20 配列変数ですっきりと?(2次元配列)]
[No.21 変数の型を意識する]
[No.22 関数って?Subプロシージャを呼ぶ]
[No.23 値を返すユーザー関数、Function関数]
[No.24 関数のパターンを少し]
[No.35 イベント処理について]
[No.36 オブジェクトのプロパティについて]
[No.37 オブジェクトのメソッドについて]
[No.45 歌詞の表記を参考に関数を作成]
[No.73 オブジェクトのループはFor Each In でループさせる]
VBA関数
[No.3 Dir関数でファイルの存在をチェックする]
[No.17 Val関数で文字列を数値に変換してみた]
[No.18 文字列を数値に変換、CIntで変換]
[No.38 キャラクタコード?って何? Chr関数、Asc関数]
[No.39 StrConv関数で半角を全角文字にしてみた]
[No.40 Len関数で遊ぶ、遊ばれる]
[No.72 文字列を日付型に変換、Cdateへの値の渡し方いろいろ?]
[No.77 Not演算子で細工する、プログラムはパズルのように...]
Excel関係
[No.28 Excelのグラフをgifへ変換 .Exportメソッド使用]
[No.43 セルのB3を参照するには?]
[No.44 Cells(257)とCells(2,1)の関係]
[No.49 Excel Rows(n).Select で行選択]
[No.47 Excel Application.GetOpenFilenameでファイル名取得]
[No.60 Cancel=Trueの使い方(例題:Excel 右クリック禁止)]
[No.51 Excel Range オブジェクトを使う]
[No.86 Excel 起動オプションのお話(引数的なラブレターを渡したい)]
Excel UserForm
[No.30 Excel UserForm テキストボックスのイベント]
[No.32 Excel UserForm_KeyDownイベント発生条件]
[No.34 ┌ ─ ┐│└ ┘を使って、文字列を囲ってみたい]
[No.42 ExcelのForm シートと連動させる]
[No.46 カウンタで先頭行チェック、空白で終わりの判断]
[No.61 Excel Form 閉じる方法 Unload Me]
[No.63 Excel UserForm で データ・フォームの機能を真似てみる]
[No.68 Excel Formで値を設定、標準モジュールで使用したい]
[No.84 Excel UserFormでコンボボックスを使用してみた]
Access 関係
[No.1 いきなりサンプルじゃぁねぇ、、文句の一つ言いたいよ]
[No.75 空のMDBを作成後、DoCmd.CopyObjectでテーブルコピー]
[No.85 Access クエリーで演算フィールドを使ってみる]
Access フォーム
[No.41 AccessのForm .Pictureプロパティで画像参照]
[No.62 Access フォームでパスワード入力(入力後*****表示)]
[No.65 Access Form TextBoxの.SelLength .SelStartプロパティ]
[No.66 Access ユーザーマスターのチェックとメニュー切り替え]
[No.67 Access Formを隠す Me.Visible = False (Closeとの違い)]
[No.69 Access コンボボックスを自動で開きたい]
Access レポート
[No.74 Access 列型レポートの左端に印刷したい]
[No.76 Access レポート Me.NextRecord = Falseで移動を止める]
Access から Excel 連携
[No.2 AccessからExcel出力]
[No.7 MDBと同フォルダのExcelファイルを開く]
[No.13 Excel セルに名前を付けてみる]
[No.14 Excel 隣のシートを参照して逃げる]
[No.48 AccessからExcelブックを開き、書式設定を行う]
[No.54 AccessからExcel開いて、処理終了後に閉じたい]
[No.58 Access クエリーを Excel既存シートへ エクスポート]
[No.59 Excelのマクロ付きフォーマットを壊されないように]
[No.64 AccessからExcelファイルを開いて・印刷して・閉じたい]
Excel から Access 連携
[No.15 ExcelからAccessのフォームを開いてみました]
[No.16 ExcelからAccessのモジュールを呼んでみました]
テキストファイル処理
[No.27 テキストファイル処理 ファイルへの書き込み]
[No.29 テキストファイル処理 ファイルからの読み込み]
[No.31 Write #で ””を付けた書き込み]
[No.33 FreeFile関数で空いてるファイル番号を返す方法]
インターネットエクスプローラーの操作(InternetExplorer.application)
[No.50 IE起動 CreateObject("InternetExplorer.application")]
[No.52 InternetExplorer.application .document.body.innerText]
[No.53 文字列を探す、InStr関数の使い方]
[No.70 InternetExplorer.application .document.all(0).innerHTML]
[No.71 IE操作 リンク先を取出す .Document.links(i).href]
Outlookを操作する
[No.55 Outlookを操作してメールを送りたい]
[No.56 Outlookから複数のアドレスにBCC送信]
[No.57 Outlook メールアイテムの形式でハマる]
[No.78 Outlookでファイルを添付するには?.Attachments.Add]
FTPの設定ファイルを作成してみた
[No.25 コマンドラインのFTPを使ってみた]
[No.26 FTP -n オプションとuserコマンド]
Excel HTML表作成ツールもどき
[No.80 Excelのセル範囲をHTMLの表(.html)にしてみる]
[No.81 セルの右寄せ、中央寄せをHTMLの表にしてみる]
[No.82 背景色、フォントカラーをHTMLの表にしてみる]
[No.83 改行LFを<BR>などHtml用にエンコードして書き込む]
その他
[No.6 ファイルの起動場所を知る方法]
[No.79 SJIS--JISコードの文字列を作成したい]
...
挨拶
最後まで読んでいただき、どうもです。
失敗続きのAB型の変わり者 三流プログラマー Ken3です。
[Excel/Access VBA],[
ASP(Active Server Pages)]の解説
[
プログラマーの愚痴]、[
元コンビニ店長時代の話]
をネタにしてHP作成、メルマガ書いてます。
最近、[初心者にやさしいプログラム]の解説と[
ネットで稼ぐ小悪テク]の解説を始めようかなぁと思ってます。
...