ツイッターのお題「君の名は?」
ツイッターで出題されたVBAの問題をやってみました。
ツイッターのエクセルおよびVBA関係の人達の間で問題を出し合うという事が行われています。
今回のお題は以下になります。

ツイッターで回答したので、その記録です。
回答した名前を返す関数のVBAコード
Function 名前を教えて(ByVal aName As String) As String
Dim arySymbolNum, arySymbol, aryName
arySymbolNum = Array(65293, 45, 8208, 8722, 8210, 8212, 8211, 8213, 12540, 65392, 9472, 9473, 19968)
aryName = Array("全角ハイフンマイナス", "半角ハイフンマイナス", "全角ハイフン", "全角マイナス", _
"フィギュアダッシュ", "全角ダッシュ", "二分ダッシュ", "ホリゾンタルバー", _
"全角長音", "半角長音", "罫線細", "罫線太", "いち")
Dim i As Long
arySymbol = ""
For i = LBound(arySymbolNum) To UBound(arySymbolNum)
arySymbol = arySymbol & ChrW(arySymbolNum(i))
Next
Dim ix As Long
ix = InStr(arySymbol, aName)
If ix = 0 Then
名前を教えて = "知らん"
Else
名前を教えて = aryName(ix - 1)
End If
End Function
この問題の難しいところは、これらの記号がVBAでは直接文字列として入力できない事にあります。
VBEの文字コードはShift_JISなので、先の文字の多くは入力しても"?"となってしまいます。
そこで、このVBAではUnicodeで入力して、ChrWで文字列に変換しています。
文字コードの詳細については以下を参照してください。
Byte配列と文字コード関数について
文字コードから文字列に変換後は配列にしても良いのですが、
1文字判定に限定するならInStr関数で位置を取得したほうが早そうだと思い、文字列結合で処理してみました。
このあたりは、いろいろなやり方が考えられるところです。
テスト実行

Sub test()
Dim i As Long
For i = 1 To 14
Debug.Print 名前を教えて(Cells(i, 1))
Next
End Sub

同じテーマ「ツイッター出題&回答」の記事
「VBAによる解析シリーズその2 カッコ」をやってみた
ツイッターで出されたVBAのお題(悪魔のCSV)をやってみた
「VBAで導関数を求めよ」ツイッターのお題をやってみた
ツイッターのお題「君の名は?」
ツイッターのお題「CSV編集」
アルファベットの26進(ツイッターお題)
ナンバープレート数字遊び:ツイッターお題
保護されたブックの非表示シートについて
文字列のセルだけ結合
時間に関する関数の扱い方
COUNTIF関数の結果は?
新着記事NEW ・・・新着記事一覧を見る
4,9を使わない連番作成|エクセル雑感(2022-06-16)
VBAの基礎・基本の要約|VBA入門(2022-06-14)
ピッボットテーブルって便利だよね|還暦のVBA(2021-10-18)
還暦のVBA:VBAまでたどりつけるか… (2021-09-29)
VLOOKUPを使うことを基本としてシートを設計すべきか|エクセル雑感(2021-08-17)
コンピューターはブラックボックスで良い|エクセル雑感(2021-08-14)
小文字"abc"を大文字"ABC"に変換する方法|エクセル雑感(2021-08-13)
ADOでテキストデータを集計する|VBAサンプル集(2021-08-04)
VBA学習のお勧めコース|エクセル雑感(2021-08-01)
エクセル馬名ダービー|エクセル雑感(2021-07-21)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.Excelショートカットキー一覧|Excelリファレンス
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
9.並べ替え(Sort)|VBA入門
10.エクセルVBAでのシート指定方法|VBA技術解説
- ホーム
- エクセル全般
- ツイッター出題&回答
- ツイッターのお題「君の名は?」
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。