Excel VBA質問箱 IV

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

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


76507 / 76732 ←次へ | 前へ→

【4646】Re:論理演算を行う関数について
回答  hira  - 03/4/1(火) 4:08 -

引用なし
パスワード
   >処理の注釈など入れていただければありがたいのですが・・・
確かに説明もなくコードだけで申し訳なかったのですが、

>>>関数(NOTモジュール)を作ろうと思うのですがなかなか案が浮かばず
との事でしたので、基本的な関数は作成できる方だと判断していますので、
実質3行のプログラムなんですが...


Sample1は文字列を1バイトずつ(1文字ずつではない)切り出して、そのコードを求め
NOT演算後、また文字列の同じ位置に戻す作業を文字列のバイト数分繰り返しています。

>Function Sample1(s As String) As String
>  Dim ss As String '作業用
>  Dim i As Long   'ループカウンタ
>  ss = s
  '文字列のバイト数分ループする
>  For i = 1 To LenB(ss) '←LenB(s)になっていたけどこのほうが良いですね
    '文字列のiバイト目の文字コードをNOT演算した文字にする
>    MidB$(ss, i, 1) = ChrB$(Not AscB(MidB$(ss, i, 1)))
>  Next
  '返り値のセット
>  Sample1 = ss
>End Function


Sample2はByte型の動的配列に文字列を代入できることを利用して、配列の要素ごとに
NOT演算後、文字列に戻しています。

>Function Sample2(s As String) As String
>  Dim b() As Byte '作業用バイト配列
>  Dim i As Long  'ループカウンタ
  '文字列(引数)をByte配列に代入
>  b = s
  'Byte配列の最小要素〜最大要素についてループ
>  For i = LBound(b) To UBound(b)
    '各要素のNOT演算
>    b(i) = Not b(i)
>  Next
  '返り値のセット(Byte配列を文字列に戻す)
>  Sample2 = b
>End Function

使用している関数の詳細についてはヘルプ等でご確認ください。

1 hits

【4509】論理演算を行う関数について ユウキ 03/3/25(火) 9:59 質問
【4536】Re:論理演算を行う関数について hira 03/3/26(水) 2:22 回答
【4638】Re:論理演算を行う関数について ユウキ 03/3/31(月) 13:53 発言
【4646】Re:論理演算を行う関数について hira 03/4/1(火) 4:08 回答
【4680】Re:論理演算を行う関数について ユウキ 03/4/2(水) 16:33 発言
【4722】Re:論理演算を行う関数について ユウキ 03/4/3(木) 17:25 お礼

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