質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

419閲覧

VBAで配列を格納したい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/11/10 05:10

編集2020/11/10 06:13

前提・実現したいこと

ifでtrueの場合配列を格納したい

発生している問題・エラーメッセージ

  • リスト条件式が判定されない

cells(5,9)からtrue,false判定がありtrueだったら処理するように書いたのですが
trueでも処理が無視されます

chkName()の中のxを空白にしたり8に変えてみた

原因が何かわからず困っています
良い方法ご存じの方ご教授お願いします。

該当のソースコード

VBA

1 Dim chkName(8) As String, i As Long, x As Long 2 Dim worksheet As Worksheets 3 For x = 0 To 8 4 For i = 5 To 14 5 If Worksheets("勤怠確認加減算シート").Cells(i, 9).Value = True Then 6 chkName(x) = Worksheets("勤怠確認加減算シート").Cells(i, 10).Value 7 Range(i, 7) = chkName(x) 8 End If 9 Next 10 Next

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/10 05:18

何をおっしゃっているかよく分かりませんが、 chkName(x) = Cells(i, 10).value にブレークポイントを設定しても止まらないということですか。 であれば、Cells(i, 9).Value はどこのシートを見てますか。
ttyp03

2020/11/10 05:21

文字列で"True"と入っているのですか? 真偽値のTrueですか?
退会済みユーザー

退会済みユーザー

2020/11/10 05:38

ご回答ありがとうございます。 busyoda:コート修正しました。 ttyp03:真偽値です。 文字列も試してみましたが変化なしでした。
退会済みユーザー

退会済みユーザー

2020/11/10 05:50 編集

修正後のコードだと chkName(8) しか使ってませんが。 あと、hatena19 さんから指摘ある通り、Range の引数がおかしいですね。 (そもそもそこまで行ってないみたいですが) 取り敢えず、If ステートメントにブレークポイントを設定して、 判定時のCells(i, 9).Value の値を確認して下さい。
guest

回答1

0

ベストアンサー

とりあえず下記の修正で動きます。

vba

1Dim chkName(8) As String, i As Long, x As Long '格納 2 For x = 0 To 8 3 For i = 5 To 14 4 If Cells(i, 9).Value = True Then 5 chkName(x) = Cells(i, 10).value 6 'Range(i, 7) = chkName(x) 間違い 7 Cells(i, 7) = chkName(x) 'こちらに修正 8 End If 9 Next 10 Next

ただし、配列の中身はすべて Cells(14,10).Value になるので無意味なものになります。
(繰り返し上書きしているだけ。)

最終的に配列に何を格納したいのか論理的に説明してください。


Trueのセルの右隣りのセルの値を配列に格納したい、とエスパー。

vba

1 Dim chkName() As String, i As Long, x As Long '格納 2 x = 0 3 4 For i = 5 To 14 5 If Cells(i, 9).Value = True Then 6 ReDim Preserve chkName(x) 7 chkName(x) = Cells(i, 10).Value 8 Cells(i, 7) = chkName(x) 9 x = x + 1 10 End If 11 Next 12 13 MsgBox Join(chkName) '配列の中身を確認

投稿2020/11/10 05:38

編集2020/11/10 05:51
hatena19

総合スコア33790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/10 06:17

私が欲しいドンピシャの回答ありがとうございます。! もっと論理的に説明できるように善処します 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問