アプリ版:「スタンプのみでお礼する」機能のリリースについて

合計値を1セルずつ入れてきたいのですが、LEN関数で合計値の長さを求めると かえってくる数字が必ず4になります。(9999より大きくても、1000より小さくても4です。)
なぜでしょうか?
作成していたもの一部は以下になります。(足りていなかったら追記します。)


Dim aaa1,aaa2,kai,i1

aaa1=0
kai=1
Do While Cells(kai, 1).Value <> ""
aaa2=Cells(kai,1)
aaa1=aaa1+aaa2
Loop

Sheets(2).Activate
For i1 = 1 To Len(aaa1)
Cells(1, 15 - Len(aaa1)).Offset(0, i1).Value = Mid(aaa1, i1, 1)
Next i1

質問者からの補足コメント

  • すみません(TT)
    kaiを増やすのを 書き忘れていました。
    実際はkai=kai+1入っています。

      補足日時:2018/02/27 21:11

A 回答 (6件)

そもそも、掲示板の質問にはないもので、質問するのはやめましょう。


>かえってくる数字が必ず4になります。(9999より大きくても、1000より小さくても4です。)

それは基本的なことです。Long型の変数を、Lenで調べれば、必ず4が返ります。
文字長を測るなら、文字にしなければできません。

Sub Test_Len()
 Dim a As Integer
 Dim b As Long

 b = 123456789
 a = Len(b) '必ず4になります
End Sub
    • good
    • 0
この回答へのお礼

long型になっていました(TT)
もう少し勉強します。ありがとうございました。

お礼日時:2018/02/28 17:05

これで最後


Dimで変数の型を省略してるので、バリアント型(16バイト)になります。

ソースに間違いが無ければ、「必ず4」と言う事は起きません。
「必ず4」になるのは、型を明示的に「long」と記述した場合です。
    • good
    • 0
この回答へのお礼

型が関係していることを知らず、ここでは型を略して書かせていただいていました。
ありがとうございます(TT)

お礼日時:2018/02/28 17:05

>>実際はkai=kai+1入っています。


このソース部分だけを実行した限りでは、「必ず4」と言う事は起きません。

途中のロジックでaaa1を書き換えてるか、1列目の書式が特殊か、どちらかでは無いですか?
    • good
    • 0

すでに答えは出ていますが、


kai  = kai +1 
これを、Do ~ Loop の間の、aaa2 = Cells(kai,1) の下に入れてあげればよいわけですね。
それはともかく、一つのセルに一つの数字を入れる不思議なコードだと思います。Excelカテゴリで同様の質問した人がいましたが、関数での質問でしたから、偶然の一致のようです。

私の知っているワザを使ってみました。
もう少し、検討の余地があるかもしれません。

'//
Sub Test2()
 Dim Rng As Range
 Dim Ans As Variant
 Dim strVal As Variant
 Dim i As Long, j As Long
 With Worksheets("Sheet1")
  Set Rng = .Range("A1", .Cells(Rows.Count, 1).End(xlUp))
 End With
 Ans = Application.Sum(Rng)  'この下にエラーチェックを加えることが可能
 strVal = Format(Ans, String(14, "@"))  '右詰め
 With Worksheets("Sheet2")
 For i = 1 To 14
  j = .Cells(Rows.Count, 15).End(xlUp).Row + 1  '行の増加
  .Cells(j, 1).Offset(, i).Value = Mid(strVal, i, 1)
 Next i
 End With
End Sub
    • good
    • 0

kaiと言う変数が1回もカウントアップせずに、いつも1のままだから。



aaa1にはいつもCells(1,1)がセットされるだけ。
    • good
    • 0

kaiと言う変数が1回もカウントアップせずに、いつも1のままだから。



aaa1にはいつもCells(1,1)がセットされるだけ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!