- 締切済み
指定したセルが変更された時でも自由に文字を入力
ご教授下さい。ワークシートに下のようなVBAコードを書きました。A列の入力されている日付の曜日が”月”,"水","金"に該当するならC列に”定期業務”、”土”,"日"に該当するなら”休み”、それ以外は空白になるようなコードです。ご存じのように計算式をセットされたセルは指定されたセルの内容に拘束され自由に変更できませんが、例えば”火”,”木”にあるC列の空白にコードの計算式に拘束されずに自由に文字を直接入力したいのですが、どうすればよろしいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Dim GYO As String ' 現在行 GYO = Target.Row If GYO <= 1 Then Exit Sub Application.EnableEvents = False ' 計算式をセット(R1C1形式なら式は固定で良い) Cells(GYO, 3).FormulaR1C1 = "=IF(OR(WEEKDAY(RC1)=2,WEEKDAY(RC1)=4,WEEKDAY(RC1)=6),""定期業務"",IF(OR(WEEKDAY(RC1)=7,WEEKDAY(RC1)=1),""休み"",""""))" Application.EnableEvents = True End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- hue2011
- ベストアンサー率38% (2801/7249)
発想の転換です。 なぜC列に入力したいと思うのでしょうか。 D列に自由入力したらいいじゃないですか。 そこは何もしていない場所だから何でも入力可の領域ですね。 罫線を、いまはC列は各カラム全部外側を囲っていますが、C列の右側の線はぬきましょう。 そして、D列は、上、下、右、だけの罫線にします。 これだけで、Cで何をやっていようとも、自由に何でもCの右側余白実はD列に書けるのです。 印刷したら、Cの表示とDの表示は同じ枠にあるものと見えます。 おかしなロジックをマクロで書き込んだりするとバグのもとになります。 シンプルに行きましょう。
- ambriel
- ベストアンサー率51% (65/127)
数式を仕込んで表示を変えるだけならマクロを使わずともできるので、せっかくマクロを使うなら 「月水金なら『定期業務』の文字列を直接入力する」といった処理のほうがよいのでは? これなら「火木なら『なにもしない』」ことでユーザーが自由に入力できます。 If Cells(GYO, 2).Value = "月" Or Cells(GYO, 2).Value = "水" Then Cells(GYO, 3).Value = "定期業務" ElseIf ...(以降略) ※Excelマクロの質問をするなら、カテゴリーは [技術者向] コンピューター > プログラミング > Visual Basic がよいです。
お礼
ambreiさんへ 回答ありがとうございました。教えてgooにも同じ内容を投稿していますが、ママチャリさんからの回答通りにしたらうまくいきました。
- f272
- ベストアンサー率46% (8480/18152)
If GYO <= 1 Then Exit Sub の次の行に IF OR(WEEKDAY(RC1)=3,WEEKDAY(RC1)=5) THEN EXIT SUB と書いておけばいいんじゃないのかなあ。
お礼
f272さんへ 回答ありがとうございました。教えてgooにも同じ内容を投稿していますが、ママチャリさんからの回答通りにしたらうまくいきました。
お礼
hue2011さんへ 回答ありがとうございました。日報の入力は例題として提起したので一番知りたかったのはワークシートモジュールで書いたプログラムコードでセットされたセルの数式を固定されたものではなく自由に編集できないかというものでした。教えてgooにも同じ内容を投稿していますが、ママチャリさんからの回答通りにしたらうまくいきました。