
if 文などで「""」を返した場合の空白文字列をブランクにしたい
if 文などで「""」を返した場合は、空の文字列を返しているのであって、ブランクが返ってきているわけではありません。
コピーして貼り付け(値のみ)をしても、空の文字列は空の文字列、ブランクはブランクです。
コピーして貼り付け後(値のみ)の空の文字列をブランクにするには、delete が一番簡単です。
上記の様に記載されているのを見つけました。ここでご質問が御座います
任意の範囲(今回はB1:D50)で空の文字列をブランクに変えるVBAに困っております。
どなたか、教えていただけないでしょうか?
よろしくお願い致します。
使用環境:Windows7x64 Office 2007
No.6
- 回答日時:
>シートAの内容コピーして、シートBに貼り付け際に(値のみ)
>シートBに空白の文字列として貼り付けされるため、
いわゆる「値貼り付け」で、="" というものをコピーし、別の所に貼り付けると、痕跡としては残るけれども、何も入っていないかもしれません。
もしかしたら、マクロは不要かもしれませんが、試しに使ってみてください。(標準モジュールが最適)
以下はループしていませんから、完全に削除されたか確かめるためには、同じプロシージャで、二度マクロを行う必要があります。
Sub DeleteUnVisibleString()
Dim rng As Range
Dim c As Variant
Dim iFlg As Integer
On Error Resume Next
Set rng = Range("B1:D50").SpecialCells(xlCellTypeFormulas, xlTextValues)
iFlg = 0
If rng Is Nothing Then
Set rng = Range("B1:D50").SpecialCells(xlCellTypeConstants, xlTextValues)
iFlg = 1
End If
On Error GoTo 0
Application.ScreenUpdating = False
If Not rng Is Nothing Then
For Each c In rng
If Trim(c.Value) = "" Then
c.ClearContents
End If
Next
MsgBox rng.Cells.Count & "個の" & IIf(iFlg, "空白値の", "数式の空白値の") & "セルを削除しました。", vbInformation
Else
MsgBox "空白値の文字列は見つかりません。", vbExclamation
End If
Application.ScreenUpdating = True
End Sub
ご回答有り難うございます!
問題なく削除されました。
削除された数もちゃんとでました。
本当に、何度も何度もご教授して頂き有り難うございます!
No.5
- 回答日時:
試しに書いてみました。
これで如何でしょうか。
Sub test()
Dim a As Integer
Dim b As Integer
For b = 2 To 4
For a = 1 To 50
If Cells(a, b).Value = "" Then
Cells(a, b).ClearContents
End If
Next a
Next b
End Sub
早速のご返答有り難うございます!
実際に挿入したマクロです。
Dim ma As Integer
Dim mb As Integer
For mb = 2 To 5
For ma = 1 To 100
If Cells(ma, mb).Value = "" Then
Cells(ma, mb).ClearContents
End If
Next ma
Next mb
処理に数秒掛かるのですね!
ウェイト時間に少しビックリしましたが、問題なくクリアされております!
本当に有り難うございました!
PS:もう少し軽い処理があるかもしれないので、ご回答をもう少し受付させて下さい。
No.3
- 回答日時:
確かに、空白文字列で返されるのはもどかしいときがありますね。
すでに任意の値が入力されているのかどうかが分かりませんが、入力されている、という前提でお話しします。
多少発想を変えて、以下のようにしてみてはいかがでしょうか。
例)
If Range("B1").value="" then
Range("B1").clear
※clearではなくdeleteかもしれません。
メソッド等に間違いがあるかも知れませんが、簡単に言葉にすると「空白文字列をデリートする」というだけです。
この回答への補足
ご回答有り難うございます。
B1:D50には任意の文字が記入されたセルと
空白文字列のセルが混合しております。
その中から空白文字列のセルを選択し、デリートしたいのです。
ご教授頂いた内容を任意の範囲で実行しましたところ、
実行時エラー13、型が一致しませんと表示されました。
If Range("B1:D50").Value = "" Then
Range("B1:D50").Delete
End If
どの部分がおかしいのでしょうか?ご教授頂けると幸いです。
よろしくお願い致します。
No.2
- 回答日時:
関数のIF関数を使ってあるセルを空白("")にしてもそのセルには関数が入力されている限り空白にすることはできませんね。
VBAを使って空白にしようとしてもそのセルに関数が入力されている限りは無理で、その関数式を消去しない限り空白にすることはできないですね。なぜVBAまで使って空白にすることが必要なのでしょう。
例えばCOUNTA関数では関数が入って空白のセルまで数えられてしまいますね。関数を使って文字列の入ったセルの数を求めるのにCOUNTA関数ではなく次のような式にすることで関数で空白となったセルの数を除いた数を求めることができます。参考までに。
=COUNTIF(A1:A100,"?*")
この回答への補足
ご回答有り難うございます。
シートAの内容コピーして、シートBに貼り付け際に(値のみ)
シートBに空白の文字列として貼り付けされるため、
シートBの任意の範囲において空白文字列を選択しDELETE処理を行いたいのです。
説明が言葉足らずで申し訳御座いません。
どうぞお力をお貸し下さい。よろしくお願いします。
No.1
- 回答日時:
何も入っていないA1セルで
=LEN(A1)は「0」
空白が入っているA2セルで
=LEN(A2)は「1」
やりたいことはこういう判定でしょうか?。
この回答への補足
ご回答有り難うございます。
シートAの内容コピーして、シートBに貼り付け際に(値のみ)
シートBに空白の文字列として貼り付けされるため、
シートBの任意の範囲において空白文字列を選択しDELETE処理を行いたいのです。
説明が言葉足らずで申し訳御座いません。
どうぞお力をお貸し下さい。よろしくお願いします。
※選択したい範囲は空白では無く、空の文字列になります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- Excel(エクセル) Excelの関数についておしえてください。 3 2023/04/20 18:36
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) Excelについて質問です(ver2019) 1 2023/06/30 21:20
- Excel(エクセル) Excelの空文字判定について 7 2023/01/06 13:25
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Excel(エクセル) EXCEL の判定式をお教えください 3 2022/06/08 14:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
「データ要素を線で結ぶ」がチ...
-
ピボットテーブルで空白セルの...
-
形式貼り付けの「空白を無視す...
-
エクセル 連番が途切れていると...
-
エクセル セルのコピー元が空...
-
Excel > ピボットテーブル「(空...
-
空白セル内の数式を残したまま...
-
Excel:関数が入っているセルに...
-
excel2010 空白セルにのみ貼り...
-
Excelで、入力文字の後に自動で...
-
エクセルにて負の時間を0:00と...
-
エクセルで入力すると隣のセル...
-
エクセルで数式の入ったセルの...
-
数式による空白を無視して最終...
-
関数TRANSPOSEで空白セルを0に...
-
Excel 特定セルの数値を参照し...
-
エクセルのグラフで式や文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数で空欄("")の時、Null...
-
エクセルでCSVを編集するとき、...
-
空白セルに斜線(罫線)
-
Excel > ピボットテーブル「(空...
-
Excelで、入力文字の後に自動で...
-
エクセル 連番が途切れていると...
-
ピボットテーブルで空白セルの...
-
「データ要素を線で結ぶ」がチ...
-
Excel:関数が入っているセルに...
-
数式による空白を無視して最終...
-
空白セル内の数式を残したまま...
-
excel2010 空白セルにのみ貼り...
-
【Excel】 csvの作成時、空白セ...
-
エクセルで上の行の値を自動的...
-
エクセルのIF関数で、隣のセル...
-
エクセルで、「複数のセルの中...
-
形式貼り付けの「空白を無視す...
-
関数TRANSPOSEで空白セルを0に...
-
【Excel】 Ctrl+方向キー で空...
-
色つき行の一括削除は?
おすすめ情報