No.1
- 回答日時:
こんにちは!
>入力フォームの最後の行に入力されたら、
>自動で次のフォームが出てくるブックを作りたいです。
の部分が具体的にどのようにしたいのか判らないので、
とりあえずSheet1のA1セルにデータ入力があれば、すべてのSheetを「再表示」にする!
というコードです。
Sheet1のシートモジュールとして↓のコードをコピー&ペーストしてA1セルにデータを入力してみてください。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim k As Long
If Target.Address = "$A$1" Then
For k = 1 To Worksheets.Count
Worksheets(k).Visible = True
Next k
End If
End Sub
尚、非表示の操作も必要になると思いますので余計なお世話かもしれませんが、
Sheet名が「Sheet1」以外の場合のSheetを非表示にするコードです。
標準モジュールとしてコピー&ペーストしてください。
Sub Sheet非表示()
Dim k As Long
For k = 1 To Worksheets.Count
If Worksheets(k).Name <> "Sheet1" Then '←「Sheet1」は常に表示しておきたいシート名に!
Worksheets(k).Visible = False
End If
Next k
End Sub
※ 再表示のコードのセル番地は実状に合わせて適宜変更してください。m(_ _)m
回答頂きありがとうございます。
情報提供不足で申し訳ございません。
開きたいシートは1つずつで、
一気に全てのシートを開くわけではありません。
例えば、Sheet1のA1にデータが表示されたら、
Sheet2を再表示し、Sheet2のA1にデータが表示されたら、
Sheet3を開くといった具合です。
また、セルには関数を入力しており、
返す値がない場合には空白を表示するようにしています。
なので、関数が入っていても、
値が入っていなければ、Sheetは再表示されないコードがあれば
教えて頂きたいです。
あと、非表示のコードも書いて頂いているのですが、
どのような条件で非表示になるのでしょうか?
標準モジュールにコピペしても非表示にならなかったので、
何か条件があるのであれば、そちらも教えて頂きたいです。
よろしくお願いします。
No.2
- 回答日時:
シート1のシート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
worksheets("Sheet2").visible = (target.row = range("A65536").end(xlup).row)
end sub
ファイルメニューから終了してエクセルに戻る
>指定のセルにデータが入力されたら、
>自動的にシートを表示させる
シート1のA列最終行にデータを入力するとシート2を表示する
回答頂きありがとうございます。
セルに関数を入れていない状態では、
問題なく表示されました。
ただ、該当するセルには関数を入れている状態で、
返す値がない場合には空白を返して、返す値がある場合には数字を表示するようにしています。
この場合には、どのようにコードを変更したらよいでしょうか?
また、該当するセルの表示が消えたら、
自動的にシートを非表示にしたいのですが、
それも可能でしょうか?
No.3
- 回答日時:
あなたのご相談は「指定のセルにデータを入力したら」です。
数式のお話じゃありませんでしたね。あなたの「具体的な」エクセルの内容が何一つご相談に書かれていないので、
>該当するセルには関数を入れている状態で、
>返す値がない場合には空白を返して、返す値がある場合には数字を表示するようにしています。
>この場合には、どのようにコードを変更したらよいでしょうか?
問題の数式セルの計算結果が数字になったり空白になったりする時には、かならず対応するどこかのセルに手で何かを記入したり消したりしてるハズですよね。
あなたが見てる数式セルじゃなく、その数式セルの表示を出したり消したりする入力セルをチェックするよう、回答したマクロを書き換えてください
という答えしか返すことができません。
#参考【二度手間三度手間は御免なので、下記を参考にして自力で適切に応用してください】
「具体的な」エクセルの説明とは、こういう事です:
シート1のA列に何かを記入すると、B列の上から下までずらっと埋めてある数式が数字を計算する
A列のデータを消去するとB列が空白になる
→マクロでヤリタイ事は、結局こういう事になります
シート1のA列最終行にデータを入力すると、該当のB列の数式が数字を表示するので、その時にシート2を表示する
手順:
シート1のシート名タブを右クリックしてコードの表示を選ぶ
現れたシートに記入されている内容を全て消去する
改めて下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
if target.column <> 1 then exit sub
worksheets("Sheet2").visible = (target.row = range("A65536").end(xlup).row)
end sub
ファイルメニューから終了してエクセルに戻る
↓
シート1のA列最終行にデータを記入するとシート2が表示される
No.4ベストアンサー
- 回答日時:
No.1です。
>例えば、Sheet1のA1にデータが表示されたら、
>Sheet2を再表示し、Sheet2のA1にデータが表示されたら、
>Sheet3を開くといった具合です。
>また、セルには関数を入力しており、
>返す値がない場合には空白を表示するようにしています。
に関して・・・
数式によって表示されている場合はChangeイベントは使えませんので別の方法です。
Sheet名はSheet1・Sheet2・Sheet3・・・となっているとします。
それぞれのシートモジュールにコツコツコードを記載するのが間違いないと思います。
まずSheet1のシートモジュールに
Private Sub Worksheet_Calculate()
If Range("A1") <> "" Then
Worksheets("Sheet2").Visible = True
End If
End Sub
次にSheet2のシートモジュールに
Private Sub Worksheet_Calculate()
If Range("A1") <> "" Then
Worksheets("Sheet3").Visible = True
End If
End Sub
のようにSheet2~最終Sheetの一つ前のシートモジュールにコードを記載すれば
A1セルに空白以外のデータが表示された場合に、次のSheetが表示されます。
>あと、非表示のコードも書いて頂いているのですが、
>どのような条件で非表示になるのでしょうか?
これは何かの変化で実行されるコードではなく、ご自身でマクロを実行する必要があります。
標準モジュールに前回のコードがあるとすると
Alt+F8キー → マクロ → マクロ実行です。
この操作はSheet1以外のSheetを非表示にしたいときにご自身で操作してください。m(_ _)m
回答頂きありがとうございました。
私の説明不足で気を悪くされた方も居たのに、
細かく教えてくださり、本当に助かりました。
早速、このコードを使ってファイルの作成をしようと思います。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA 複数のブックに同じ列を表示させる方法 2 2022/07/20 23:49
- Excel(エクセル) Excelのマクロについて教えてください。 4 2022/05/31 14:07
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 3 2022/06/10 09:24
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/06/10 11:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報