エクセルのマクロ(VBA)に関して、ご質問いたします。
私のレベルは入門編で、いろんなサイトや本を見て、そのまま利用しているくらいのものです。
次のコードは、他人様のサイトで見つけたものです。
Sub 結合セルを含むロックしていないセルの値の削除()
Dim c As Range
With ActiveSheet
.Unprotect
For Each c In .UsedRange
If Not (c.Locked) Then c.MergeArea.ClearContents
Next
.Protect UserInterfaceOnly:=True
End With
End Sub
この処理を複数シートに行いたいので、次のコードを(これも他人様のサイトからお借りしています)、上のコードの「Dim c As Range」の後に追加しましたが、アクティブシートは処理されましたが、全部のシートとはいきませんでした。
Dim Sh As Object
For Each Sh In Sheets
単純に足しただけでは、だめなのでしょうか。
参考になるかどうかわかりませんが、シートの中には、値を削除しなくてもいいものも含まれています。
シートが全部で40枚弱あるので、全部のシートをチェックして、ロックされていないセル(結合セル含む)に値が入っていたら、値を削除する処理を、マクロ(VBA)で出来たらいいなっと思っております。
教えていただけますでしょうか。
どうぞよろしくお願いいたします。
以下でVBAでつくりたいのです。
もし、○○株式会社なら
納品書シートのK3のセルを選ぶ
その○○株式会社のなかでも○○センターの分なら
「NOなし」のメッセージと「○○セ)運賃出せ」のメッセージがでる
もし、NOが入っていなかったら、納品書をしたまま印刷
NOが入っていたら、印刷なしで、売上日報表のシートへ戻る
そこで私が手打ちでNOを消す作業をしたいと思います。
NOを手打ちで消したあと、手動で納品書シートに切り替えて納品書にある印刷ボタンをクリックして印刷(マクロボタンを納品書シートに作っています)
○○株式会社で○○センターの分でないなら、
NOが入っていたら、納品書の画面を表示したまま、印刷
NOが入っていなかったら、NO・確認のメッセージが出て、売上日報表シートへ戻る
そこで、私が売上日報表に手打ちでNOを入れる作業をしたいと思います。
NOが入ったら、納品書シートを私が手動でクリックするので、納品書シートにある印刷のマクロボタンをまた押すと印刷
○○株式会社でないなら、NOあるなしにかかわらず印刷
以上です。
○○センターの分はNOが入っていたら印刷、NOが入っていなかったら、メッセージが出て、売上日報表に戻り、印刷されないようになってしまいます。その逆になってほしいのですが、難しいです。
どうすれば、うまくいくのでしょうか?
手打ちの部分は構文は要りません。
下記は構文です。
Public Sub msgbox○○会社()
If Range("A5").Value = "○○会社" Then
Worksheets("納品書").Range("k3").Select
If Worksheets("納品書").Range("B17,B6") = "○○センター" Then
MsgBox "NOなし"
MsgBox "○○セ)運賃出せ"
If Worksheets("納品書").Range("k3").Value < 0 Then
'納品書画面を表示
Worksheets("納品書").Select
Else
Worksheets("納品書").Select
End If
Else
Worksheets("納品書").Select
End If
If Range("k3").Value > 0 Then
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Else
Worksheets("納品書").Select
msgBox "NO" & vbCrLf & "確認"
Worksheets("売上日報表").Select
End If
Else
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
End If
End Sub
間違いはどこですか?
以下でVBAでつくりたいのです。
もし、○○株式会社なら
納品書シートのK3のセルを選ぶ
その○○株式会社のなかでも○○センターの分なら
「NOなし」のメッセージと「○○セ)運賃出せ」のメッセージがでる
もし、NOが入っていなかったら、納品書をしたまま印刷
NOが入っていたら、印刷なしで、売上日報表のシートへ戻る
そこで私が手打ちでNOを消す作業をしたいと思います。
NOを手打ちで消したあと、手動で納品書シートに切り替えて納品書にある印刷ボタンをクリックして印刷(マクロボタンを納品書シートに作っています)
○○株式会社で○○センターの分でないなら、
NOが入っていたら、納品書の画面を表示したまま、印刷
NOが入っていなかったら、NO・確認のメッセージが出て、売上日報表シートへ戻る
そこで、私が売上日報表に手打ちでNOを入れる作業をしたいと思います。
NOが入ったら、納品書シートを私が手動でクリックするので、納品書シートにある印刷のマクロボタンをまた押すと印刷
○○株式会社でないなら、NOあるなしにかかわらず印刷
以上です。
○○センターの分はNOが入っていたら印刷、NOが入っていなかったら、メッセージが出て、売上日報表に戻り、印刷されないようになってしまいます。その逆になってほしいのですが、難しいです。
どうすれば、うまくいくのでしょうか?
手打ちの部分は構文は要りません。
下記は構文です。
Public Sub msgbox○○会社()
If Range("A5").Value = "○○会社" Then
Worksheets("納品書").Range("k3").Select
If Worksheets("納品書").Range("B17,B6") = "○○センター" Then
MsgBox "NOなし"
MsgBox "○○セ)運賃出せ"
If Worksheets("納品書").Range("k3").Value < 0 Then
'納品書画面を表示
Worksheets("納品書").Select
Else
Worksheets("納品書").Select
End If
Else
Worksheets("納品書").Select
End If
If Range("k3").Value > 0 Then
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Else
Worksheets("納品書").Select
msgBox "NO" & vbCrLf & "確認"
Worksheets("売上日報表").Select
End If
Else
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
End If
End Sub
間違いはどこですか?
以下でVBAでつくりたいのです。
もし、○○株式会社なら
納品書シートのK3のセルを選ぶ
その○○株式会社のなかでも○○センターの分なら
「NOなし」のメッセージと「○○セ)運賃出せ」のメッセージがでる
もし、NOが入っていなかったら、納品書をしたまま印刷
NOが入っていたら、印刷なしで、売上日報表のシートへ戻る
そこで私が手打ちでNOを消す作業をしたいと思います。
NOを手打ちで消したあと、手動で納品書シートに切り替えて納品書にある印刷ボタンをクリックして印刷(マクロボタンを納品書シートに作っています)
○○株式会社で○○センターの分でないなら、
NOが入っていたら、納品書の画面を表示したまま、印刷
NOが入っていなかったら、NO・確認のメッセージが出て、売上日報表シートへ戻る
そこで、私が売上日報表に手打ちでNOを入れる作業をしたいと思います。
NOが入ったら、納品書シートを私が手動でクリックするので、納品書シートにある印刷のマクロボタンをまた押すと印刷
○○株式会社でないなら、NOあるなしにかかわらず印刷
以上です。
○○センターの分はNOが入っていたら印刷、NOが入っていなかったら、メッセージが出て、売上日報表に戻り、印刷されないようになってしまいます。その逆になってほしいのですが、難しいです。
どうすれば、うまくいくのでしょうか?
手打ちの部分は構文は要りません。
下記は構文です。
Public Sub msgbox○○会社()
If Range("A5").Value = "○○会社" Then
Worksheets("納品書").Range("k3").Select
If Worksheets("納品書").Range("B17,B6") = "○○センター" Then
MsgBox "NOなし"
MsgBox "○○セ)運賃出せ"
If Worksheets("納品書").Range("k3").Value < 0 Then
'納品書画面を表示
Worksheets("納品書").Select
Else
Worksheets("納品書").Select
End If
Else
Worksheets("納品書").Select
End If
If Range("k3").Value > 0 Then
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Else
Worksheets("納品書").Select
msgBox "NO" & vbCrLf & "確認"
Worksheets("売上日報表").Select
End If
Else
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
End If
End Sub
間違いはどこですか?