Excelでカナ以外を半角に変換する

Function z2hexckana(target As String) As String
    Dim charReplace As String, charcur As String
    Dim charAlph As String, charNum As String, charSign As String
    Dim result As String
    Dim i As Long

    charAlph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    charNum = "0123456789"
    charSign = "!#$%&?()*+?./:;<=>?@[¥]^_{|}。、,,"
    charReplace = charAlph & StrConv(charAlph, vbLowerCase) & charNum & charSign
    
    result = target
    For i = 1 To Len(charReplace)
        charcur = Mid(charReplace, i, 1)
        result = Replace(result, charcur, StrConv(charcur, vbNarrow))
    Next i
    
    z2hexckana = result
End Function

Excelで半角カナのみを全角に変換する

Function h2zkana(target As String) As String
    Dim charexclude As String, charcur As String
    Dim charAlph As String, charNum As String, charSign As String
    Dim result As String
    Dim i As Long

    result = StrConv(target, vbWide)
    
    charAlph = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    charNum = "0123456789"
    charSign = "!#$%&?()*+?./:;<=>?@[¥]^_{|}。、,,"
    charexclude = charAlph & StrConv(charAlph, vbLowerCase) & charNum & charSign
    
    For i = 1 To Len(charexclude)
        charcur = Mid(charexclude, i, 1)
        result = Replace(result, charcur, StrConv(charcur, vbNarrow))
    Next i
    
    h2zkana = result
End Function

Excelのデータベース関数の比較は前方一致

データベース関数のCriteriaをワークシート上の領域に取る場合、その条件に合致しているかの文字列比較は前方一致でされてしまいます。
つまり、該当列が”検索”である行のみを引っかけたいのに、”検索文字列”となっている行も引っかけてしまいます。例えばDSUM関数であれば、想定以上の数になります。

これを防ぐには、Criteriaの領域のセルに =”=検索” と入力します。
ただし、当然のことながらこのままの形で表示されるので、Criteria部分と集計結果表を兼用したい場合には要注意です。イコールを削除した別セルを表示するようなことになるでしょう。

また、Excel2002以前では、デフォルトで完全一致だそうなので、これまた要注意です

Access2000とAccess2003のVBAの非互換性

Access2000からAccess2003へのアップデートをしたときに、プログラムの互換性の部分で引っかかったので、その備忘録です。何年も前ではありません。ごく最近の話です。

xsWks.Range(xsWks.Cells(r1, c1), xsWks.Cells(r2, c2)).value = varCellBuf

この部分で、エラーになるようになりました。varCellBufはvariantの二次元配列ですが、ここに一定以上の長さの文字列が入るとだめ。Access2000ではOKですが、Access2003ではだめ。

実行時エラー ‘1004’
アプリケーション定義またはオブジェクト定義のエラーです。

http://support.microsoft.com/kb/818808/jaあたりに関係しそうな記載がありますが、そのものずばりの記載はまだ見つけていません。

セルの表示は1024字までという制約があったので、これまで1セル当たりの文字数を1000字にしてきましたが、これを900字までの制限にしたらOKでした。やはり912文字なのか。

なお、Access2007に持っていくと、1000字のままでもエラーにはなりません。しかし別のエラーが出ましたので、それは別アーティクルで。