[[20050328104634]] 『シートに変化があったらメッセージを表示?』(レイビジョン) ページの最後に飛ぶ

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

 

『シートに変化があったらメッセージを表示?』(レイビジョン)

 こんにちは本日も宜しく御願い致します。

 品物の発注を受ける仕事をしています。
 毎日あるものではないので、何とかなるのかなって思い質問させていただきました。
 下記のようなシートがあります。

	A	B	C	D	E
1	日付	事業所	発注品	個数	発注済み
2	3月28日	東京店	蛍光灯	30	
3		大阪店	消しゴム	10	 済
4		福岡店	ノート	10	

 A列に日付、B列に店名、C列に品物、D列に個数、
 E列に業者に依頼したかの確認となっています。
 A列からD列まではお店側が入力し、E列は自分で入力します
 毎日発注があるわけではありません。

そこでお願いがあります。(第一が出来なければ第二で御願い致します)

 第一希望、規定のシートに入力があった場合、ログインした時デスクトップに
  「シートが変更されました」等でお知らせすることが出来ますか?

 第二希望、シートを開いた時に「シートが変更されました」等で
   お知らせすることが出来ますか?

 環境はExcel2002、WindowsXP です
 とんでもない質問をしてるかもしれませんが、宜しく御願い致します
 (レイビジョン)


  > 第一希望
 シートが変更されたかどうかを、内容的にどのような条件で判定すればよいですか?

  (INA)

 INA様ありがとうございます

 	A	B	C	D	E
1	日付	事業所	発注品	個数	発注済み
2					
3			 
4			

 このように無記入の状態から始めます。
A列は同じ日付だと無記入なので、B、C、D列に入力された時
(1行もあれば10行の時もある)に判定が出来るように御願い致します。(レイビジョン)


 それは入力された時点でのことですよね?

 そのブックを保存した後、
 「ログインした時」 に、そのブックの内容を調べ、
 何を基準に「シートが変更された」と判断すればよいのでしょうか?

 Q.何をもって「シートが変更された」とみなすか?
 A1・ブックの内容は問わず、ファイルの更新日時が変わっていたら
 A2・ブックの行数が変更されていたら
 A3.データの内容が変更されていたら(時間がかかるので実用的ではない)
 (変更された箇所を知る必要があるのかなどにもよります) 

 いずれの場合も、
 「前回ログインしたときのブックの状況」と「現在のブックの状況」を
 比べる必要があるので、 
 ログインする度に、ブックを調べ、そのときの情報を
 どこかに記録しておく必要があります。
  (INA)


 INA様ありがとうございます
無記入の状態から一つでも(一行でも)記入されていたら
シートが変更されたと判断します
必ず開いた時は、発注し、無記入の状態にして保存をします
上記のÅ2またはÅ3になると思います。(変更された箇所を知る必要はありません)
宜しく御願い致します(レイビジョン)


 A2 が空白かどうかを判定できればよいのですね。

 このブックが保管されているフォルダのパスとファイル名
 とシート名も教えて下さい。
  (INA)


 メモ帳に以下のコードをコピペして、
 "C:\My Documents\Sample.xls" を変更し、
 ファイル名の拡張子を txt → vbs に変更し、
 スタートアップフォルダに入れて下さい。

 Dim xlApp
 Dim xlBook
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = False
  xlApp.DisplayAlerts = False
  Set xlBook = xlApp.Workbooks.Open("C:\My Documents\Sample.xls") 
     if xlBook.Worksheets(1).Range("A2").Value <> "" then
        msgbox "シートが変更されました。",vbInformation,"更新チェック"
     end if
 xlApp.Quit
 Set xlBook = Nothing
 Set xlApp = Nothing

  (INA)

 INA様有難うございます
フォルダは  Cドライブ
ファイル名は 在庫管理
シート名は  発注入力フォームです
宜しく御願い致します (レイビジョン)


 もうすでに方法は書いてます。適宜変更して試して下さい。
  (INA)

 INA様有難うございます
変更しやってみます。時間がかかると思いますので
宜しく御願い致します (レイビジョン)


大変遅くなり申し訳ありません
 試してみましたが、このようなメッセージが出ました

 行   6
 文字  102
 エラー 終了していないも文字列の定数です
 コード 800Å0409
 ソース Microsoft VBScript コンパイル エラー

 自分には理解が出来ませんが
 宜しく御願い致します (レイビジョン)


 ファイルのパスは正しいですか?
  (INA)


 INA様本当に有難うございます
重ね重ね申し訳ありません

 Dim xlApp
 Dim xlBook
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = False
  xlApp.DisplayAlerts = False
  Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\sasaki daisuke\デスクトップ\[Book1.xls]Sheet1
") 
     if xlBook.Worksheets(1).Range("A2").Value <> "" then
        msgbox "シートが変更されました。",vbInformation,"更新チェック"
     end if
 xlApp.Quit
 Set xlBook = Nothing
 Set xlApp = Nothing

 このような感じなんですが 
練習の為自分のPCで試しております(本来は会社のPCで実施します)
ファイルのパスは=cell("filename",A1)で表示されたものを
コピペしました。これがいけないのでしょうか?   (レイビジョン)


 私の書いたコードを真似して下さい。
 開くブックを指定するのに、シート名は不要です。

 (なおデスクトップにファイルを置くことはお薦めできません。)
  (INA)


 INA様何度も何度も有難うございます
自分のやり方がおかしいんでしょうが、上手く行きません

 Dim xlApp
 Dim xlBook
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = False
  xlApp.DisplayAlerts = False
  Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\sasaki daisuke\デスクトップ\Book1.xls") 
     if xlBook.Worksheets(1).Range("A2").Value <> "" then
        msgbox "シートが変更されました。",vbInformation,"更新チェック"
     end if
 xlApp.Quit
 Set xlBook = Nothing
 Set xlApp = Nothing

これでは、駄目ですか? (レイビジョン)


 ひとまず "c:\Book1.xls" にでもブックを置いて試してみて下さい。

 そして、Worksheets(1).Range("A2").Value <>""  なので、
 sheet1(一番左のシート)のA2に適当な文字を入れておき
 vbsを実行してみて下さい。
  (INA)   

 INA様 出来ました。感激です 本当にご親切にありがとうございました。
今後とも宜しく御願い致します。
まことに恐れ入りますが、もう少し伝授してください。

	A	B	C	D	E     F
1	日付	事業所	発注品	個数	発注済み  納品日
2	3月28日	東京店	蛍光灯	30	
3		大阪店	消しゴム	10	 済    3/30
4		福岡店	ノート	10	

 上記のように、F列に納品日があります。
E列は自分が入力し、F列は店舗が入力します。(1店舗とは限らず3店舗同時に納品もあります)
納品日の入力を確認したら、自分が削除し空白を上にずらしています。
(上記ではA3:F3を消去しA4:F4以下をすべて上にずらす)
そこで、納品日の入力を確認したらAからFまでの横1列が削除され
削除した部分に対して上にずれるような便利な事って出来ますか?
ボタンを押したら削除されるような様式なら最高です。
重ね重ね本当に申し訳ありません。
宜しく御願い致します  (レイビジョン)


 >ボタンを押したら削除 
 確認後に、普通に行削除した方が早くないですか?

 あとWorksheets(1) は、シート名が決まっているなら
 Worksheets("発注入力フォーム")のように指定して下さい。
  (INA)


 INA様有難うございます
明日会社で試してみます
 >ボタンを押したら削除 
F列以降AN列まで色々なデータが入っており
是非御願したいのですが
御礼は遅くなってしまいますが
どうぞ宜しく御願い致します  (レイビジョン)


 行削除ならマクロの記録でできませんか?
  (INA)

 INA様有難うございます
常に一番上の行だけ削除するのなら出来るんですが
発注された品物によって2行目だったり、3行目だったりするものですから
もしかしたら、このような場合でもマクロの自動記録でも出来るのでしょうか?
宜しく御願い致します(レイビジョン)

 削除する行を特定するための条件は何ですか?
  (INA)


 INA様本当に有難うございます
優しくしていただいて、本当に感謝いたします。

	A	B	C	D	E     F
1	日付	事業所	発注品	個数	発注済み  納品日
2	3月28日	東京店	蛍光灯	30	
3		大阪店	消しゴム	10	 済    3/30
4		福岡店	ノート	10	

 上記表ではF列に値(日付)が入力された時が良いんですが
もしそれで無ければ、列を増やしてもかまいません
=IF(F4="","","○")
このような式を利用すれば良いのでしょうか?
宜しく御願い致します(レイビジョン)


 F2以下のセルで値のあるセルの行を削除なら・・

 Dim i As Long

    For i = Range("F65536").End(xlUp).Row To 2 Step -1
        If Cells(i, 6).Value <> "" Then
            Rows(i).Delete
        End If
    Next i

  (INA)


 INA様出来ました
2日に渡り本当に有難うございました
自分に出来る領域ではまったくありませんが
ここのサイトで親切に教えてくださったことを
本当に深く感謝いたします

 また、このようなサイトを運営されている管理人の方
それをサポートしている方々にも御礼を申し上げます
今後とも宜しく御願い致します (レイビジョン)

 すいません、教えてください

 Dim xlApp
 Dim xlBook
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = False
  xlApp.DisplayAlerts = False
  Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\sasaki daisuke\デスクトップ\Book1.xls") 
     if xlBook.Worksheets(1).Range("A2").Value <> "" then
        msgbox "シートが変更されました。",vbInformation,"更新チェック"
     end if
 xlApp.Quit
 Set xlBook = Nothing
 Set xlApp = Nothing

 これでまったく問題ありませんでしたが
シートが変更されました→OKをクリックした後
このシートを開くことは出来ますか?
宜しく御願いいたします。 (レイビジョン)

 if xlBook.Worksheets(1).Range("A2").Value <> "" then
     msgbox "シートが変更されました。",vbInformation,"更新チェック"
     xlApp.Visible = true    
 else
     xlApp.Quit
 end if

  (INA)


 INA様何度も何度も優しく親切に
本当に有難うございました
何も言うことはありません
又質問をさせていただくと思います
今後とも宜しく御願い致します
有難うございました (レイビジョン)


 こんばんは
先日はありがとうございました
本当に助かりました
申し訳ありませんが
もう少しご教授ください

 Dim i As Long

    For i = Range("F65536").End(xlUp).Row To 2 Step -1
        If Cells(i, 6).Value <> "" Then
            Rows(i).Delete
        End If
    Next i

 先日このような式を教えていただきました
大変申し訳ありませんが
他にコピーをしていただきたいと申告を受けました
削除ではなく、条件にあったものを
その表から切り取り
他のシートに山積み式に出来ますでしょうか?
シート名は 納品済みシート です

 宜しく御願い致します (レイビジョン)

 Rows(i).Cut Worksheets("Sheet2").Range("F65536").End(xlUp).Offset(1).EntireRow

  (INA)


 INA様有難うございます
しかも早急に
本当にすいません、お世話になります

 Sub 納品日削除()

 Dim i As Long

    For i = Range("F65536").End(xlUp).Row To 3 Step -1
        If Cells(i, 6).Value <> "" Then
            Rows(i).Cut Worksheets("Sheet2").Range("F65536").End(xlUp).Offset(1).EntireRow

        End If
    Next i
    Range("A3").Select
End Sub

 このようになりました
データーは、見事にカットされシートに移動できました
2点ほど御願いがあります
1、移動できたんですが、残った部分が上に移動しなくなってしまいました
2、移動されたものが下に下に行くのですが
  新しく移動したものが上に上になるように出来ますか?

 我がままで本当に申し訳ありません
どうぞ宜しく御願い致します (レイビジョン)

 Rows(i).Copy Worksheets("Sheet2").Rows(1).Insert Shift:=xlDown
 Rows(i).Delete Shift:=xlUp

  (INA)


 INA様有難うございます
これで宜しいのでしょうか?

 Sub 納品日削除()

 Dim i As Long

    For i = Range("F65536").End(xlUp).Row To 3 Step -1
        If Cells(i, 6).Value <> "" Then
             Rows(i).Copy Worksheets("Sheet2").Rows(1).Insert Shift:=xlDown
 Rows(i).Delete Shift:=xlUp

        End If
    Next i
    Range("A3").Select
End Sub

 構文エラーって出てしまうんですが
宜しく御願い致します レイビジョン


 寝ぼけてました・・・

 Rows(i).Copy
 Worksheets("Sheet2").Rows(1).Insert Shift:=xlDown
 Rows(i).Delete Shift:=xlUp
  (INA)


 おはようございます
ありがとうございました
早朝から恐縮です
シート1に完璧にコピーされ順番も何の問題もありません
申し訳ありません、移動されたものをA2以下にコピーを
していきたいんですが
1列目には見出しがあるので避けたいのですが
宜しく御願い致します  レイビジョン


 文章の意味がいまいちよくわかりませんが、
 2行目に挿入したいなら 1 → 2 にするだけです。
  (INA)


 INA様
ありがとうございました,完璧です。
わからないことってあるんですか?
INAさんって
これからも宜しく御願い致します
ありがとうございました  レイビジョン


INA様たびたび申し訳ありません
 教えてください
先日教えていただきましたものです

 Dim xlApp
 Dim xlBook
  Set xlApp = CreateObject("Excel.Application")
  xlApp.Visible = False
  xlApp.DisplayAlerts = False
  Set xlBook = xlApp.Workbooks.Open("C:\Documents and Settings\sasaki daisuke\デスクトップ\Book1.xls") 
     if xlBook.Worksheets("請求シート").Range("A3").Value <> "" then
        msgbox "物品の請求がありました !   ",vbInformation,"m(_ _)m お仕事です m(_ _)m"
     xlApp.Visible = true    
 else
     xlApp.Quit
 end if

この構文なんですが

 msgbox "物品の請求がありました !   ",vbInformation,"m(_ _)m お仕事です m(_ _)m"

 このとき、OK で必ずシートにジャンプするものを教えていただきました
 「はい」または「OK」ならシートを開く
「いいえ」「キャンセル」ならシートを開かずにウインドウを閉じる
このような事って出来ますか?
",vbInformation,"この部分を",OKCancel,"に変更しただけでは
当然のことながら駄目でした
何度も申し訳ありません。宜しく御願い致します。 (レイビジョン)


 > msgbox "物品の請求・・・
    ↓

 if vbno = msgbox("aa",vbInformation+vbyesno,"") then
    xlApp.Quit
 end if

  (INA)


INA様ありがとうございました
 感謝の一言です
本当に有難うございます (レイビジョン)

コメント返信:

[ 一覧(最新更新順) ]


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