1

私の最初の質問はすぐに答えられたので、別の質問をしたいと思いました!:)

おそらくあなたたちにとっては本当に簡単ですが、私はそれを理解できないようです。単純な整数配列を文字列配列に変換しようとしています。これは、私が抱えている問題では、int配列ではなく文字列をクロスオーバーするのが簡単だからです(またはそう思います!)

しかし、これまでのコードは次のとおりです。

    Dim Parent1s() As String
     For i = 1 To ChromoLength.Value
      y = y + Val(MyArray(rnd2, i))
      q = Val(MyArray(rnd2, i))
      Parents1(i) = q
  Next i

 For i = 0 To ChromoLength.Value
 Parent1s(i) = Val(Parents1(i))
 Next i
'Cells(8, 1) = Parent1s

Parent1sに文字列を生成させることができず、不一致エラーが発生し続けます。他のすべてが正しく暗くなり、parent1sステートメントをハッシュすると残りのコードが機能します。

みんなありがとう!

4

2 に答える 2

3

このCStr()関数を使用して、値をに変換できますStrings

Sub toString()

    Dim i As Integer
    Dim iStr As String
    i = 5

    iStr = CStr(i)

    MsgBox (iStr)


End Sub

ただし、Option Explicit問題は、変数に名前が付けられParent1sていることを使用しておらず、問題が発生していることが原因である可能性がありますParents1。これらを非常に類似させることを意図している場合は、より良い命名規則を強くお勧めします。それ以外の場合は、次のように動作するはずです。

For i = 0 To ChromoLength.Value
     Parent1s(i) = CStr(Parents1(i))
 Next i
于 2012-09-29T20:08:20.327 に答える
0

Parent1s(i) = Val(Parents1(i))を使用して文字列に変換しようとしている場合 Parents1、これは正しい方法ではありません。Val数字や文字を含む可能性のある文字列を数値のdoubleに変換しようとします。実際、Parents1が標準のデータ型であると仮定すると、問題なく暗黙的に文字列に変換する必要があります。ただし、そうでない場合は、いつでもを使用できますCstr()

これは問題ではないかもしれませんが、Parent1s()のディメンションを作成することはありません。

寸法を記入Parent1s()するには、次の行を追加します。

Redim Parent1s(0 to ChromoLength.Value)

ところで、実際にすべての変数を暗くして意図的に名前を選択した場合は、他の誰かにわかりやすい変数名を使用するようにしてください(偶然にも1年後に自分自身を意味する可能性があります)。

将来的には、また私たちがより良い手助けをするために、サンプルコードに変数のディメンションを設定する行を含めるか、各変数に使用しているデータ型を具体的に指定する必要があります。

于 2012-09-29T23:12:31.270 に答える