逆さ言葉
30日間1日1本マクロ生活、2日目です。
マクロを書く準備は、0日目に記事を書きました。
マクロを書く準備早速マクロを書こうと思ったんですが、マクロって何?食えんの?って人もいると思うんで、丁寧に行こうかな、と。マクロってのは、通常は人間の手でやるような作業を、プログラムを書くことで機械に自動的にやらせるってことです。Excelの場合はVBA(Visual Basic for Application)という言語を使ってマクロを書きます。まずはその準備を。Excelを起動すると、ワークシートが現れます。ここでキーボードの「ALT+」を押してください。はキーボードの上方にあるファンクションキーの11番です。すると、このウィンドウが開... 0日目 マクロを書く準備をしよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか? |
今日のネタも、文字列の操作。
子どもが大好き、逆さ言葉です。
自分の名前は逆さに言える
みなさん、自分の名前って逆さに言えるじゃないですか。
言えたところで何の自慢にもなりませんけど、言えるじゃないですか。
小学生なんか、それはそれは誇らしげに自分の名前を逆さに読んで連呼するじゃないですか。
そんな逆さ読みをサポートするマクロです。
A列に入っているこのデータを、B列に逆さまにして出力したいんです。
さっそくコードを
Sub 逆さ言葉()
a = Selection.Value
x = Selection.Column
y = Selection.Row
l = Len(a)
For n = 1 To l
ans = ans & Mid(a, l - n + 1, 1)
Next n
Cells(y, x + 1) = ans
End Sub
では、解説します。
2~4行目
「a = Selection.Value」の「.Value」。「.」は「の」でした。
「Value」は「値」。つまり、選択しているセルに入っている値です。
セルに書かれている内容をaという変数に入れます。
「x = Selection.Column」と「y = Selection.Row」は1日目と同じですね。
文字列の分割30日間1日1本マクロ生活、記念すべき1日目です。マクロを書く準備は、0日目に記事を書きました。と言っても今日なんですけど。今日のネタは、文字列の分割です。こんなデータがあるんです。GEOPAPINASHVILI, AmiranJPNAOKI, DaiHUNSZABO, CsabaSLOTRBOVC, MatjazFRAMKHEIDZE, LukaGERHEYDER, MaximilianAZESADIGOV, MehmanTUROZLU, BekirBRAKITADAI, FelipeMARHOUMMANI, AbderrahmaneGBRMCKENZIE, AshleyMONSICCARDI, YannPORMANSINHO, GoncaloRUSMSHVIDOBADZE, RobertGERKLEMM, LukasCROAZINOVIC, BernardTURKABA, Ahmet ... 1日目 3文字目で分割しよう【30日間1日1本マクロ生活】 - わたしの日常に価値はありますか? |
「l = Len(a)」ですが、「Len」というのはカッコの中の値の文字数を調べる関数です。
変数aに「ふるいけや」が入っていれば、Len(a)は5です。
「わたしの日常に価値はありますか」だったら、Len(a)は15です。
For ~ Next
For n = 1 To l
ans = ans & Mid(a, l - n + 1, 1)
Next n
1日目にやったように、「For ~ Next」はループです。
変数 n に1から1つずつ数字を増やしたものを入れていって、lになるまで続けなさい、という命令です。
「Mid」は1日目にやりましたね。「l-n+1」で後ろからn番目を表すことができます。
実行結果
逆さ言葉にしたい文字列を含むセルにカーソルを合わせ、マクロを記述するウィンドウの「Sub」と「End Sub」の間にカーソルを置いて、画面上方の再生ボタン的なアイコン(右向きの三角形)をクリックするか、[F5]キーを押します。
はい、このように逆さ言葉の完成です。
これが何の役に立つのかって?
それは使う人次第でしょう。
Excelは便利
悔しいですが、Excelは便利です。
Microsoftにお金を払うのは癪でしょうがないんですが、Excelばかりは仕方がない。
マクロを書くようになると、Excelからは離れられないですね。
30日間、頑張ります。