重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

【やりたい事】
以下画像をご覧ください。

G1からG5までに、C1-C5までのデータを入力したいです
以下のコードでは、A列に空白が現れるまでループするようになっています

本当の空白はA6なのです。A3が関数は入っていますが、空白表示の為
ここで、ループが止まってしまいます

ですので、A3の関数【=IF((E3)=0,"",(E3))】もデータが入っているとみなす
コードはありませんでしょうか?

ご存じの方、教えて下さい

【コード】
Sub sample()

' 変数の宣言
' 行番号変数に初期値を設定
i = 1


' A列の値を判定し、G列に対応する値を書き込む

Do While Cells(i, "a") <> ""

Select Case Cells(i, "a").Value

Case "アメリカ"

Cells(i, "g") = Cells(i, "c")

Case "日本"
Cells(i, "g") = Cells(i, "c") & "-1"



Case Else
Cells(i, "g") = Cells(i, "c")
End Select

' 行番号変数の値に1を加え、次の行に進む
i = i + 1

Loop

End Sub

「【マクロ】【画像あり】関数が入っているセ」の質問画像
  • 画像を添付する (ファイルサイズ:10MB以内、ファイル形式:JPG/GIF/PNG)
  • 今の自分の気分スタンプを選ぼう!
あと4000文字

A 回答 (1件)

こんにちは



通常の .End(xlUp) で最終行を取得する方法を用いれば、関数式の設定されているセルも(表示値に関わらず)空白セルとは見做されないので、その範囲でループすれば宜しいでしょう。

あるいは、ご提示の様なループ方法をとるのなら、Rangeの.HasFormula プロパティで関数式の有無を調べられますので、そちらで確認する方法でも宜しいでしょう。
https://learn.microsoft.com/ja-jp/office/vba/api …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!