E列の5行目から2000行までの間で
鉄、銅、銀、空白以外の文字が入っていたら
『鉱1_Click』という別のマクロを行うというマクロなのですが、
『銀』に限ってはE列5行目~2000行の間に1つだけあっても
『鉱1_Click』を走らせるようにしたいのですが、
どのように改造すればできると思いますか?
Private Sub 鉱_Click()
Dim ColumnA
Dim flg As Boolean
flg = False
ColumnA = Columns("E:E")
For i = 5 To 2000
If ColumnA(i, 1) = "鉄" Or ColumnA(i, 1) = "銅" Or ColumnA(i, 1) = "銀" Or ColumnA(i, 1) = "" Then
Else
flg = True
Exit For
End If
Next
If flg Then
鉱1_Click
Else
End If
End Sub
No.3ベストアンサー
- 回答日時:
あなたのプログラムで少し気づいた点を述べて、一例として私のサンプルプログラムを書いておきます。
> Dim ColumnA
> ColumnA = Columns("E:E")
変数の型を指定していないため、2行目を実行したときに、65536個(256x256、~excel2006)、1048576個(1024x1024、excel2007)の配列変数が作成さえます。 無駄が多すぎます。
また、このケースで配列変数は必要ないと思われます。
> For i = 5 To 2000
変数「i」が定義されていないので、Variantタイプの変数が自動的に作成されます。 しかし、変数を明示的に定義してないと、思わぬところでバグができやすいので、モジュールの行頭に「Option Explicit」を記述することが薦められています。
> ColumnA = Columns("E:E")
> ColumnA(i, 1)
VBAを使うときには、列番号も数式で扱うことが多いので、エクセルのオプションから「R1C1参照形式を使用する」にチェックを入れて使用すると便利です。 Columns("E:E") ⇒ Columns(5)、ColumnA(i, 1) ⇒ Cells(i, 1)
> flg = True
> If flg Then
各条件文の中で、「flg」を設定し、S/R のような形で使うより、「flg」を設定のところで直接「鉱1_Click」に飛ばしてもよいと思います。
〔サンプルプログラム〕
Private Sub 鉱_Click()
Dim r As Long, rStart As Long, rEnd As Long ' 行に関する変数
Dim c As Integer '列に関する変数
Dim nCountSilver As Integer
Dim s As String '文字列に関する変数
c = 5
rStart = 5
rEnd = Cells(Rows.Count, c).End(xlUp).Row ' データ最後の行取得
For r = rStart To rEnd
s = Cells(r, c)
If Not (s = "鉄" Or s = "銅" Or s = "") Then
If s = "銀" Then
nCountSilver = nCountSilver + 1
If nCountSilver > 1 Then
鉱1_Click
nCountSilver = 0
Exit For
End If
Else
鉱1_Click
Exit For
End If
End If
Next
End Sub
注1) 「鉱1_Click」を処理した後に連続して次の鉱物を見に行くときは、IF文中の「Exit For」を削除してください。
注2) 「Rows.Count」で、そのバージョンのエクセルの全行数を取得できます。
注2) 「nCountSilver = 0」の行は、連続して次の鉱物を見に行く場合で、1度「銀」が発見された後は、見つける度に「鉱1_Click」へ飛ぶ場合は、削除してください。
なお、各種条件への分岐には、私個人としては、プログラムが見え易いという点で、Select Case 文を使いますが、Orignal が「IF」文なので、それに従いました。
No.2
- 回答日時:
一例ですが、こんな感じでしょうか。
Private Sub 鉱_Click()
Dim ColumnA
Dim flg As Boolean
flg = False
ColumnA = Columns("E:E")
For i = 5 To 2000
Select Case ColumnA(i, 1)
Case "鉄", "銅", ""
Case "銀"
If flg Then
鉱1_Click
Exit Sub
End If
flg = True
Case Else
鉱1_Click
Exit Sub
End Select
Next
End Sub
No.1
- 回答日時:
If ColumnA(i, 1) = "鉄" Or ColumnA(i, 1) = "銅" Or ColumnA(i, 1) = "銀" Or ColumnA(i, 1) = "" Then
から ColumnA(i, 1) = "銀" を除外する。つまり
If ColumnA(i, 1) = "鉄" Or ColumnA(i, 1) = "銅" Or ColumnA(i, 1) = "" Then
でOKです。
この回答への補足
すいません。質問の仕方が悪かったです。
『銀』に限っては2つ以上でないと作動しないという風にしたいのです。
鉄、銅、空白、銀(1つ)の状態では発動しないようにしたいです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/07/13 12:31
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/2】 国民的アニメ『サザエさん』が打ち切りになった理由を教えてください
- ・ちょっと先の未来クイズ第5問
- ・【お題】ヒーローの謝罪会見
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
銀製かわからないジッポライタ...
-
沈黙は金、雄弁は銀。どちらの...
-
シルバーアクセサリについて
-
【茶道】毛織(もおる)という...
-
先程アルミホイルに塩とお湯を...
-
小判と割れ
-
涙のリクエストの歌詞について
-
兌換銀行券と銀兌換銀行券は同...
-
古銭 一朱銀と一分銀の見分け方
-
100円玉の材質について
-
相矢倉、攻めの理想形について
-
棋譜評価お願いします。先手です。
-
将棋における原始中飛車が初心...
-
銀を安く買う方法
-
後手振り飛車の戦法はどんなも...
-
4六銀左急戦と4六銀右急戦のそ...
-
右四間飛車の対抗法は何でしょ...
-
下記のマクロは
-
詰め手順がわかりません。
-
写真定着液から銀をとるには
おすすめ情報