[[20061031115628]] 『表と表と合わせたいのです』(shiiho) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『表と表と合わせたいのです』(shiiho)

   過去ログから見つけて使用しているのですが…[[20050721182519]]

  @  シート1は入力画面として品名ごとに入力。マクロ実行すると、各品名毎の品名
シートが自動で出来、データがコピーカットして貼付られている状態になっております。

  A  ですが、コピーされるシート1のデータには関数が入力されているのですが、
@のマクロを使用するとコピーカットされた場所の関数は全て消えるため、その後、
別のマクロで関数が入るように作成しました(…自身のないマクロですが(^^ゞ)。
ちなみに書式は残っております

  B  それぞれのマクロを一つのボタンなどで一気にしたいのですが・・・。
しかも途中でコピーする前にプレビュー画面で確認して、そのまま印刷までして
その後データの貼り付け ⇒ 関数データ作成ということを一つのボタンでしかも
簡単なマクロで、というかなりわがままなことはできないものでしょうか?

      大変、よくばりなことを言っておりますが、どなたか手助けして頂けないでしょうか…?

    よろしくお願いします_(._.)_

@

 '---------------------------------
 Sub Grouping()
 '---------------------------------
    Dim i%

    Application.ScreenUpdating = False
    With Worksheets(1)
        For i = 2 To .Range("C65535").End(xlUp).Row
            Call AddLine(i, .Cells(i, 2).Value)
        Next
    End With
    Application.ScreenUpdating = True

End Sub

 '---------------------------------
 Sub AddLine(lineNum%, sheetName$)
 '---------------------------------
    Dim lastLine%

    Call checkAndMake(sheetName)
    lastLine = Worksheets(sheetName).Range("C65535").End(xlUp).Row + 1
    Worksheets(1).Rows(lineNum).Copy
    Worksheets(sheetName).Rows(lastLine).Insert Shift:=xlDown
    Application.CutCopyMode = False

    Worksheets(1).Activate
    Worksheets(1).Rows(lineNum).ClearContents
    Range("b2").Select

End Sub

 '---------------------------------
 Sub checkAndMake(sheetName$)
 '---------------------------------
    Dim tmpWS As Worksheet
    On Error Resume Next
    Set tmpWS = Worksheets(sheetName)
    If tmpWS Is Nothing Then
        Worksheets.Add after:=Worksheets(Worksheets.Count)
        Worksheets(Worksheets.Count).Name = sheetName
        Worksheets(1).Rows(1).Copy
        Worksheets(sheetName).Rows(1).Insert Shift:=xlDown

    End If
    On Error GoTo 0

    End Sub

 '----------------------------------------------------------------------------------------------------
A
Sub ダブリチェック()

 Dim WBK As Workbook
    Dim SH1 As Worksheet
    Set WBK = ThisWorkbook
    Set SH1 = WBK.Worksheets("入力画面")
    SH1.Range("G2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-3]=0,"""",IF(AND(R[-1]C[-1]<RC[-2],RC[-2]<=RC[-1]),"""",""ダブっています""))"
    Range("G2").Select
    Selection.AutoFill Destination:=Range("G2:G20")
    Range("B2").Select

End Sub

 '---------------------------------------------------------------------------------------------------------
B
Sub 印刷前確認()

  '確認 1
     If MsgBox("入力に間違いはありませんか?", vbOKCancel + vbDefaultButton1 + _
             vbExclamation, "確認") <> vbOK Then
         'OKでなかったらBeepを鳴らしてExit Sub
         Exit Sub
     End If

  '印刷確認
     If MsgBox("印刷を実行しますか?", vbOKCancel + vbDefaultButton1 + _
             vbInformation, "印刷確認") <> vbOK Then
         'OKでなかったらExit Sub
         Exit Sub
     End If
     '印刷実行
     ActiveWindow.SelectedSheets.PrintOut Copies:=1

  '印刷完了
     MsgBox "  印刷完了", , "印刷完了"

End Sub

     すみません、 上の↑印刷ではまでプレビュー画面を出すようには出来ていません。
     できればプレビュー画面になってからメッセージが出力されるようにしたいのです…
     みなさんお力をかして下さい<(_ _)>

 少し相談文を整形させていただきました。元のトピック。
[[20050721182519]]『一つのシートから各個人ごとに分割したシートを作る』(エクセル初心者) 
 
印刷プレビュー表示中にメッセージボックスを表示したい、というのご希望のようですが・・・・
 
検証。
プレビュー表示中にメッセージボックスを表示するのはムリでしょう。
ならば、ユーザーフォームからプレビューを表示すれば、と思って試作したら、
プレビューと同時にエクセルが反応しなくなりました。やばいやばい。
プレビューしたい気持ちは分かりますが、プレビューしないと心配なレイアウトですか?
 
>印刷までしてその後データの貼り付け ⇒ 関数データ作成
という順番でコマンドボタンクリックでマクロを実行ということなら、
コントロールツールバーからコマンドボタンをシートに作成、
ボタン右クリック、「コードの表示」選択
下記のようなコードを作成します。
 
 Private Sub CommandButton1_Click()
  Call 印刷前確認
  Call Grouping
  Call ダブリチェック
 End Sub
 
デザインモードを終了してコマンドボタンをクリックすると連続でマクロ実行。
ただし、
Mookさんの作ったマクロでの Worksheets(1) (一番左のシート)と 
shiihoさんの作られたマクロでの Worksheets("入力画面") が同じものとして検証
しましたが、文面では同じシートであるとは確認できません。
この点は、ご自身での検証が必要ですよ。
 
(みやほりん)(-_∂)b


みやほりん(-_∂)bさん

お返事ありがとうございました (^o^)

『Call〜』でやってみました(^.^)

少し内容も変更してみたら、中々理想に近づきました〜♪♪

どうもありがとうございました (*'▽'*)/


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.