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

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

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

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

Q&A

解決済

2回答

2076閲覧

GoTo以外を使ってFor文の処理を飛ばしたい

kanata0214

総合スコア4

VBA

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

0グッド

0クリップ

投稿2022/03/16 08:39

編集2022/03/17 01:20

前提・実現したいこと

配列 var1 と var2 の要素を一つずつ比較しています。
var1の要素が「特定の文字列」の時は比較せず処理を飛ばしたいです。
①比較して一致したとき
②var1(i)が特定の文字列だったとき

①②のときカウントし、最後にカウントした数が要素数と一致すればコメントが表示されます。
GoTo文を使わずにFor文の処理を飛ばしたいのですがどのように変更すればよいでしょうか。
また、この処理で問題があれば教えていただきたいです。

該当のソースコード

VBA

1Sub test() 2 Dim i As Integer 3 Dim j As Integer 4 Dim cnt As Integer 5 Dim var1(2) As Variant 6 Dim var2(2) As Variant 7 8 var1(0) = "a" 9 var1(1) = "特定の文字列" 10 var1(2) = "b" 11 var2(0) = "a" 12 var2(1) = "ccccc" 13 var2(2) = "b" 14 15 For j = LBound(var1) To UBound(var1) 16 If var1(j) = "特定の文字列" Then 17 Else 18 If var1(j) = var2(j) Then 19 cnt = cnt + 1 20 End If 21 End If 22' cnt = cnt + 1 23 Next j 24 25 If UBound(var1) = UBound(var2) And UBound(var2) = cnt Then 26 MsgBox "配列は一致しています" 27 Else 28 MsgBox "配列は一致しません" 29 End If 30End Sub

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

配列の比較は出来ましたが、"特定の文字列"の時カウントできていません。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/03/16 08:53

"特定の文字列"が一つ存在すれば、全件不一致でも"配列は一致しています"が表示されるように見受けられますが、それでよろしいのですか?
guest

回答2

0

ベストアンサー

VBA

1Sub test() 2 Dim j As Integer 3 Dim cnt As Integer 4 Dim var1(2) As Variant 5 Dim var2(2) As Variant 6 var1(0) = "a" 7 var1(1) = "特定の文字列" 8 var1(2) = "b" 9 var2(0) = "a" 10 var2(1) = "ccccc" 11 var2(2) = "b" 12 For j = LBound(var1) To UBound(var1) 13 If var1(j) = "特定の文字列" Or var1(j) = var2(j) Then 14 cnt = cnt + 1 15 End If 16 Next j 17 If UBound(var1) = UBound(var2) And UBound(var2) + 1 = cnt Then 18 MsgBox "配列は一致しています" 19 Else 20 MsgBox "配列は一致しません" 21 End If 22End Sub

投稿2022/03/17 01:35

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kanata0214

2022/03/17 01:50

Orを使用すれば良かったのですね、修正依頼頂いたことで処理をきちんと理解することができました。 ありがとうございました!
guest

0

質問に記載されているコードと同じ処理内容で、Gotoを使わない実装ということであれば
これでいいじゃないですかね。
ループ内の処理のみ抜粋しています。

VBA

1 If var1(i) = "特定の文字列" Then 2 Else 3 If var1(i) = var2(j) Then 4 cnt = cnt + 1 5 End If 6 End If 7 cnt = cnt + 1

投稿2022/03/16 08:46

編集2022/03/16 08:51
Y.H.

総合スコア7918

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問