前提・実現したいこと
Excelで2つの文字列(「あいうえお」と「あかさたな」など)を1文字ずつに分割して(「あ」「い」「う」…と「あ」「か」「さ」…)文字列1と文字列2のどこまでが一致しているのかを確認するマクロをVBAで作っています。
VBAをほとんど触ったことがないため様々なサイトで調べながら書いたのですが、どのようにすればセル番号(A1,B3など)を引数にすることができますか?(=Hikaku(A1,B1)のようにつかいたいです)
また、セルの中に結果を表示したいのですが、それはコード中のどこに記述するのでしょうか?(Java等におけるreturnのようなキーワードがあるのでしょうか?)
現在のコードは以下の通りです。
該当のソースコード
Function Hikaku(a As String, b As String) Set a = Selection Set b = Selection cell1 = a.Text cell2 = b.Text Dim leng2 As Integer leng2 = Len(cell2) Debug.Print (leng1) Dim leng2 As Integer leng2 = Len(cell2) Rem sel1を切り分ける str1 [] = Split(cell1, "", 1, vbTextCompare) Rem awl2を切り分ける str2 [] = Split(cell2, "", 1, vbTextCompare) Dim i As Integer i = Min(leng1, leng2) Dim a As Boolean For m = 0 To i a = str1 = str2 Debug.Print i & "行" Next If (a.Value = False Or m = i) Then Dim pars As Double pars = i / Min(lemg1, lemg2) * 100 End Function
補足情報(FW/ツールのバージョンなど)
「cells range」でググったらもう少し話が進むかなーとおもいます。
ありがとうございます。ググってみて
Function Hikaku(arg As Range)
arg = arg.Text
Dim leng1 As Integer
leng1 = Len("arg")
Hikaku = leng1
End Function
というのを試しに作ったのですが(セル内の文字数が帰ってくるはずと想定して作った関数です)、#VALUE!になってしまいました……もう少し調べてみたいと思います。また何かアドバイスがあったら教えてください。
Sub Hikaku()
Dim leng1 As long
leng1 = Len(Cells(1, "A").Value)
Cells(1, "A").Value = leng1
End Sub
のような感じではだめですか?
bebebeさんありがとうございます!
特定の列ではなくその列が挿入等によって動いても維持できるようにしたかったため、最終的にはベストアンサーさんのお返事に載せたようなコードになりましたが、自力で試行錯誤していた時には寄せていただいたコードも参考にさせていただきました。ありがとうございます!
回答1件
あなたの回答
tips
プレビュー