advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 14724 for VBA�������������� (0.003 sec.)
[[20210115115600]]
#score: 3408
@digest: 67937376062ba18a688165118fc30105
@id: 86342
@mdate: 2021-01-15T04:06:01Z
@size: 3335
@type: text/plain
#keywords: (斎 (13533), 斎藤 (9857), 20201221172157 (7748), evaluate (4376), 20070212134849 (4137), 藤) (3825), 。ev (3257), 分勝 (2823), 数内 (2701), 記関 (2566), )>> (2263), ル上 (1637), にvb (1391), 記載 (1233), 稲葉 (965), match (946), 省略 (882), で記 (841), 構文 (830), index (807), ラム (780), 。ma (755), 白は (754), print (736), 金) (723), 2021 (717), application (700), 数名 (669), 載し (660), 白セ (644), 取得 (612), をvb (581)
『match indexをvbaで記載したい』(斎藤)
二回目の質問になります。 最初に出てくる空白セルを探したくて下記の関数を作成しました。 MATCH(TRUE,INDEX(A1:A10="",0),0) これと同じ事をしようと下記のようにVBA上で記載したのですが Application.Match(True, Application.Index(Range(Cells(1, 1), Cells(1, 10)) = "", 0), 0) エラーが出力されました。 vbaではどのように記載したら良いでしょうか? < 使用 Excel:Excel2019、使用 OS:Windows10 > ---- 範囲が決め打ちなら Sub a() Debug.Print [MATCH(TRUE,INDEX(A1:A10="",0),0)] End Sub でいいんじゃない? VBAっぽくやるなら、ループ処理を覚えるとよいと思います! Sub b() Dim i As Long Dim ans As Long ans = 0 For i = 1 To 10 If Cells(i, "A").Value = "" Then ans = i Exit For End If Next i If ans = 0 Then MsgBox "空白はありませんでした" Else MsgBox "空白は " & ans & " 行目です" End If End Sub (稲葉) 2021/01/15(金) 12:13 ---- 返信ありがとうございます。 if文はプログラムが汚くなるし、重くなるので使いたくないのです。 printでエクセルのセル上に入力してから、改めて取得するのも やはりプログラムが汚くなります。 あくまでも下記関数をそのままvbaで記載できる方法を聞いております。 MATCH(TRUE,INDEX(A1:A10="",0),0) 分かる方はいらっしゃいませんか? (斎藤) 2021/01/15(金) 12:22 ---- [[20201221172157]] 『エクセルのセルの変数名を取得したい』(斎藤) >>BOT 自分勝手な方か・・・ >printでエクセルのセル上に入力してから、改めて取得するのも これは別にセル上に入力してませんよ。 https://excel-ubara.com/excelvba4/EXCEL_VBA_424.html evaluateを省略しているだけです。 >if文はプログラムが汚くなるし、重くなるので使いたくないのです。 それは自分の技量がないだけでしょう。 (稲葉) 2021/01/15(金) 12:31 ---- すいません、最初の空白セルを取得する方法を聞いているのではなく あくまでも下記関数をvbaで記載できる方法を聞いております。 MATCH(TRUE,INDEX(A1:A10="",0),0) それ以外の答えは必要ございません。 あしからず Evaluateを省略していたのですね。 ただ、そうすると関数内にVBAの構文を書くことができないので 全く意味がありません。 MATCH(TRUE,INDEX(A1:A10="",0),0) を Application.Match(True, Application.Index(Range(Cells(1, 1), Cells(1, 10)) = "", 0), 0) のようにVBA内で書き換える方法をご存知の方はいらっしゃいますか? (斎藤) 2021/01/15(金) 12:41 ---- >Application.Index(Range(Cells(1, 1), Cells(1, 10)) = "" このような配列数式を扱う書き方がVBA内ではできないです。 そのため、VBAではFor文で各要素ごとに評価したり Evaluateを使って配列数式としても扱えるように工夫しています。 [[20070212134849]] 『Evaluate Method の研究』(seiya) >>BOT >ただ、そうすると関数内にVBAの構文を書くことができないので できます。 Evaluateに文字列として値を渡せばよいです。 その場合、Evaluateは省略できないため、下記のような扱いになります。 Sub c() Dim f As String f = "MATCH(TRUE,INDEX(■="""",0),0)" f = Replace(f, "■", Range("A1:A10").Address) Debug.Print Application.Evaluate(f) End Sub (稲葉) 2021/01/15(金) 13:03 ---- なるほど、そもそもvbaでは出来ない事だったのですね。 わかりました、ご丁寧にありがとうございます。 Evaluateを分ける方法も記載していただき、誠にありがとうございました。 (斎藤) 2021/01/15(金) 13:06 ...
http://www.excel.studio-kazu.jp/wiki/kazuwiki/202101/20210115115600.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97019 documents and 608147 words.

訪問者:カウンタValid HTML 4.01 Transitional