質問: Y End Sub プログラムの一部を簡略したものを上に記入しました。簡単に言えば、「2027」を位ごとに足す「2+0+2+7」を行いたいということです。表計算の検定を受けたこともあり、「Left」を使って各位の数字を取り出そうとしたのですが、Excelとは微妙に違いVisual Basicでは「Left(X, 2)」を使うと「左側から2番目の数字をかえす」ではなく「左から2桁分の数字をかえす」ことが判明し、「Mid」を使用して各位を取り出すようにしてみました。 各プログラムごとに結果をセルに表示させるようにし、(1, 1),(1, 2),(1, 3),(1, 4)には希望通り「2」「0」「2」「7」がそれぞれ表示されたのですが、肝心の足した式Yを(2,1)に表示させると「11」ではなく「2027」になってしまいました。 原因と対処法を教えてください。 なお、画像を添付しておきます。
回答: こんにちは。 まず、考え方が少し違う。 【プログラム】 Sub ボタン1_Click() Dim X As String X = "2027" Dim Y As Integer Y = int(Left(X, 1)) + int(Mid(X, 2, 1)) + int(Mid(X, 3, 1)) + int(Right(X, 1)) こんな風になります。 桁としてあつかいたい、 のですから、最初から、2027ではなく "2027"として、変数に設定する必要があります エクセルvbaは、変数に2027を設定するとき、数値としてなのか、文字列としてなのか、など、厳密に扱っていません。 今回は、4桁とわかっているコードですが、n桁でもできように、 と、考えてみてください。 for i=1 to len(x)で、桁を取り出し、y = y + int(mid(x,i,1)) で数値を求めます