アプリ版:「スタンプのみでお礼する」機能のリリースについて

とある表作成に下記のようなコマンドボタンを作成しましたが、
1回目は良いのですが、修正が発生し、2回目以降で再計算をする場合、
更にC列が挿入されてしまい、表が崩れてしまいます。
(Sheet1に計算表、Sheet2にデータベースという形にしています。)
その為、2回目以降はSheet2のC列を挿入しないようにしたいのです。
1つの案として列挿入後、C1セルは絶えず空白のままとなり、
(行挿入前は文字が入っています)挿入後はC1セルに文字を
入力することはない為、そこから判断して、CommandButton1を押した後、
C列を挿入するしないの作業を変えることは可能でしょうか?
もし出来なければ、C1セルが空白の場合、
”Sheet2のC行を削除後、再度実施して下さい”みたいな
メッセージボックスを出す形でもOKです。
よろしくお願いいたします。

※因みに下記は、分からないながらもマクロの記録を使って試行錯誤しながら
自己作成したものですので、不要な文が入っているかも知れません。
すみませんがよろしくお願いいたします。


ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Private Sub CommandButton1_Click()

Application.ScreenUpdating = False

Sheet2.Select
Sheet2.Columns("C:C").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove

Sheet2.Range("C2").Select
ActiveCell.FormulaR1C1 = "=RC[-1]-RC[2]"
Application.CutCopyMode = False
Sheet2.Range("C2").Copy
Sheet2.Range("C2:C20000").PasteSpecial
Sheet2.Range("C2").Select

Sheet1.Select
Range("E4").Select

Application.ScreenUpdating = True

End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

A 回答 (2件)

あ、ごめんなさい、質問内容を勘違いしていました。


空の時に中断するんですね。逆にしていました。
また、空かどうかのチェックはSheet2のC1セルだけで良いのですね。

If WorksheetFunction.CountA(Range("C:C")) <> 0 Then

If Range("C1") = "" Then

で、如何でしょう
    • good
    • 0
この回答へのお礼

ありがとうございます。
できました。
因みに、別シートからの実行だったので、
Rangeの前にSheet名を入れてあげないとうまく動きませんでしたが、
Sheet2と入れてあげるとうまく出来ました!
本当に助かりました。ありがとうございました。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
If Sheet2.Range("C1") = "" Then
MsgBox ("Sheet2のC行を削除後、再度実施して下さい")
Application.ScreenUpdating = True
Exit Sub
End If
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

お礼日時:2014/10/10 12:39

取り敢えず、「Sheet2.Select」の後に↓このコードを追加すると、お望みの動きになると思います。



If WorksheetFunction.CountA(Range("C:C")) <> 0 Then
  MsgBox ("Sheet2のC行を削除後、再度実施して下さい")
  Application.ScreenUpdating = True
  Exit Sub
End If

この回答への補足

ご回答ありがとうございます。
上記の式を入れてみたところ、
メッセージボックスが出てくる為、
削除を実施し、再度ボタンを押しましたが、
また、同様に”Sheet2のC列を削除後、、”のメッセージが
出てきてしまいます。CountA関数を使用しているようなので、
Range("C:C")の部分をC1のみに限定してやってみましたが
うまくいきませんでした;;
何処がおかしいのでしょうか?
ご確認頂けると助かります。
よろしくお願いいたします。

補足日時:2014/10/10 11:55
    • good
    • 0

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