お世話になっております。
VBA - 文字列をVBAで見つける方法を知りたい。|teratail
にて数式は"()"で括らないと計算してくれないと理解しました。
今現在セルの値が”37期”との場合のセルの行数が知りたいと思い
以下のように実装しました。
vba
1Dim year As Integer, gKi As String 2 3Private Function getGyou() As Integer() 4 5 Dim tmp As Integer 6 tmp = year - 1984'yearはこの関数呼ぶ前に値代入している 7 gKi = Str(tmp) & "期" 8 gKi = Replace(gKi, " ", "")'セルの中に半角スペースがあったら削除 9 '配列を宣言 10 Dim kiGyouArray(), i As Integer 11 12 Set searchRng = Range("B:B") 13 ' 最初はFindで検索 14 Set rng = searchRng.Find(gKi) 15 ' 検索結果を一時保存 16 Set tempRng = rng 17 i = 1 18 ' 条件にあったセルが見つからなければNothingが返るので何もしません 19 Do While Not rng Is Nothing 20 Debug.Print rng.Row 21 kiGyouArray(i) = rng.Row 22 i = i + 1 23 ' FindNextで検索を継続 24 Set rng = searchRng.FindNext(rng) 25 ' すべて検索し終えると最初に戻るので、Addressで確認! 26 ' これを忘れると無限ループになるので注意! 27 If rng.Address = tempRng.Address Then 28 Exit Do 29 End If 30 Loop 31 getGyou = kiGyouArray() 32End Function 33
ですが呼ぶ↓内で
Sub 利益の色更新_Click() Dim wb As Workbook, fname, zantei As String Dim month, tatejiku, tatejikuji As Integer fname = Range("B1").Value year = Range("B8").Value month = Range("B9").Value month = Format(month, "##") tatejiku = 10 + month tatejikuji = month - 2 zantei = Range("B10").Value Dim tounendoGyuu() As Integer Set wb = Workbooks.Open(fname) With Worksheets("利益") tounendoGyuu = getGyou :
の tounendoGyuu = getGyou で
コンパイルエラー: 配列には割り当てられません。
取得した行番号の該当月に値を入れる予定です。
何故かとググった
【VBA配列定義】Array:配列には割り当てられません。というエラーはなぜ出るか|あんもちブログ
には
Dim kiGyouArray As Variant
とすれば良いと書いてあったのでそうするとコンパイルは通るのですが
kiGyouArray(i) = rng.Row にて
実行時エラー:13 型が一致しません
となってお手上げ状態なのです……
大変申し訳ないのですが
何か情報をお持ちな方はコメント頂けますようお願い申し上げます。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/16 04:41 編集