cj_mover の回答履歴

全798件中221~240件表示
  • VBAによる数字入力で文字列表示

    いつもお世話になります。 WIN7 EXCELL2010です。 一つのシートに4ヶ月分があって合計3つのシートがあります。 1月のみの記入するところのマクロは下記のマクロのように何とか作成しました。 一つのシートでRangeが4ヶ所に分かれている場合で B6:B8(下記のマクロ) B18:AF20 B30:AF32 B B42:AF44 ですが下記のマクロをどう変えればベストかを誠に申し訳ありませんがご指導いただけないでしょうか。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If Intersect(Target, Range("B6:AF8")) Is Nothing Then Exit Sub .Font.ColorIndex = 0 Application.EnableEvents = False Select Case .Value Case 0: .Value = Empty Case 1 To 3 .Value = Choose(.Value, "営業", "休日", "特休") Case 4 To 9 .Value = Choose(.Value - 3 , "出勤",”代休”,”有給”,”休出”,”遅刻”,”早退”) End Select Application.EnableEvents = True End With End Sub

  • エクセルVBAでロックをかけたい

    エクセルVBAでコマンドボタンを押して、計算処理をさせているのですが、 計算処理中はシートへの入力等の操作をロックしたいのですが、 出来ますか? 計算処理が終わったら、元に戻したいと思っています。

  • Excel2010のVBAで起動時に連番表示&保存

    【再掲載&追加情報です】 ずっとwindowsXP SP3を使用していたのですが(Excel2002 SP3もそのまま) 今回急遽社内のパソコンが2台(1台は自分のです)だけWindows7に変わりました。 その2台だけExcelも2002から2010に変わったのですが、使用しているファイルで記述してる FileSearchが使えないとあとから知りました。(泣) ネットで検索してFileSystemObjectを代わりに使用するというのを知りましたが 初心者の為理解が難しく・・・。 申し訳ありませんが記述の変更方法を教えていただけないでしょうか? (1)フォルダーは ”C:\指示\記入済” に出来たExcelファイルを保存してます (2)番号は指定フォルダ内のエクセルファイルをカウントしてその数+1を   U1のセルに表示させています。 (3)作成した保存ボタンで新見積書を保存する    但し、マクロコードとボタンを削除したものを保存する (4)新見積書の保存後はブック、エクセルともに終了する **************現在使用中データ************** --- Module1 ---- Public Const FPath = "C:\指示\記入済" 'xlsファイル検索 Sub Auto_Open() With Application.FileSearch .NewSearch .Filename = "*.xls" .FileType = msoFileTypeAllFiles .LookIn = FPath .SearchSubFolders = False .Execute Cells(1, 21).Value = .FoundFiles.Count + 1 Cells(1, 21).NumberFormat = "0000" End With End Sub --- Module2 ---- Sub ファイルに名前を付けて保存()  Dim 既定ファイル名 As String  Dim 保存ファイル名 As Variant 既定ファイル名 = FPath & "\" & Range("T1") & Format(Range("U1"), "0000") & Range("B1") & ".xls" 保存ファイル名 = Application.GetSaveAsFilename(既定ファイル名)   If 保存ファイル名 = False Then     MsgBox "保存は中止されました"     Exit Sub   End If  ActiveWorkbook.SaveCopyAs 保存ファイル名  Dim NewBook As Workbook  Set NewBook = Workbooks.Open(保存ファイル名)  Dim myVBA As Object  For Each myVBA In NewBook.VBProject.VBComponents    With myVBA     If .Type = 100 Then      .CodeModule.DeleteLines 1, .CodeModule.CountOfLines     Else      Application.VBE.activeVBProject.VBComponents.Remove myVBA     End If    End With  Next myVBA  NewBook.ActiveSheet.Shapes(1).Delete  NewBook.Close True '●●●  Set NewBook = Workbooks.Open(保存ファイル名)  NewBook.Close True '●●● 'ブックとエクセル終了  Application.Quit  ThisWorkbook.Close False End Sub ******************************************** 上記がExcel2002で問題なく動いている記述です。 最初Excel2010で起動してエラーが出たので検索したとき、てっきりFileSearchだけが問題 だと思っていたのですがもしかして他にもあったのでしょうか? --- Module1 ----は、先ほど質問したときに Public Const FPath = "C:\指示\記入済" 'xlsファイル検索 Sub Auto_Open() Dim tmp as String Dim i as Long tmp = Dir(FPath & "¥*.xls") Do While tmp <> "" i = i + 1 tmp = Dir() Loop Cells(1, 21).Value = i+1 Cells(1, 21).NumberFormat = "0000" End Sub に変更したら動くようになりました。 ただ、作成した保存ボタンを押すと指定した場所に指定したセルの文字を拾って ファイル名を表示させるまでマクロに登録(Module2)したのですが、 指定したフォルダは開いてるのですがファイル名が空欄のままです。 更にそれに手打ちでファイル名を打ち、保存すると 実行時エラー1004 プログラミングによるVisualBasicプロジェクトへのアクセスは信頼性に欠けます と表示されます・・・。 デバックを押すと For Each myVBA In NewBook.VBProject.VBComponents の部分が黄色くなってました>< 他に情報としては このファイルはxlt(テンプレート)にしています。 使用者たちにはファイル名を打たせないように上記のようにしました。 再度宜しくお願いします・・・。 何度もお手数をおかけしまして申し訳ありません。。。

  • エクセルVBAでロックをかけたい

    エクセルVBAでコマンドボタンを押して、計算処理をさせているのですが、 計算処理中はシートへの入力等の操作をロックしたいのですが、 出来ますか? 計算処理が終わったら、元に戻したいと思っています。

  • Excel Slope関数 繰返し処理の簡略化

    ExcelのSlope関数をVBAで繰返し処理させたいのですが、自分が作製したプログラムですと、処理に時間がかかってしまう事がわかりました(正常動作はするのですが、Excelの動きが鈍い)。 動きが遅くなってしまう部分はおそらくここだろうと部分をピックアップしたので、処理が軽くなる方法がわかる方いらっしゃいましたら、教えて下さい。宜しくお願い致します。 i = 1 n = 55 Do While i < 3 i = Sheets("Sheet2").Cells(n, 2) n = n + 1 Loop n = n - 2 Worksheets("Sheet3").Range("Q16").Formula = "=Slope(Sheet2! C55:C" & n & ",Sheet2!B55:B" & n & ")" Worksheets("Sheet3").Range("Q17").Formula = "=Slope(Sheet2! E55:E" & n & ",Sheet2!D55:D" & n & ")" Worksheets("Sheet3").Range("Q18").Formula = "=Slope(Sheet2! G55:G" & n & ",Sheet2!F55:F" & n & ")" ・ ・ ・ ・ ・ Worksheets("Sheet3").Range("Q28").Formula = "=Slope(Sheet2! AA55:AA" & n & ",Sheet2!Z55:Z" & n & ")"

  • エクセルVBAでロックをかけたい

    エクセルVBAでコマンドボタンを押して、計算処理をさせているのですが、 計算処理中はシートへの入力等の操作をロックしたいのですが、 出来ますか? 計算処理が終わったら、元に戻したいと思っています。

  • エクセルVBAでロックをかけたい

    エクセルVBAでコマンドボタンを押して、計算処理をさせているのですが、 計算処理中はシートへの入力等の操作をロックしたいのですが、 出来ますか? 計算処理が終わったら、元に戻したいと思っています。

  • vba で全てのエクセルファイルを開く処理

    お世話になります。 下記のVBAソースで、特定のフォルダにあるエクセルを全て 開く処理をしているのですが、スマートに行えているか 疑問に思いました。 具体的には、「'''''''''時間がかかっている??」箇所で 無駄なこと・時間がかかっていないか疑問です。 目的としては、「vba で全てのエクセルファイルを開く処理」ですので、 (1)皆さんがされている「vba で全てのエクセルファイルを開く処理」 (2)下記ソースの「'''''''''時間がかかっている??」は時間がかかっていないか の、どちらかで、結構ですのでご返事頂ければ有り難いです。 宜しくお願いします。 ------------ソース----------------- ChDir (ThisWorkbook.Path & "\" & フォルダ) fileName = Dir("*.xls") Do While fileName <> "" If fileName <> ThisWorkbook.Name Then IsBookOpen = False '''''''''時間がかかっている?? For Each OpenedBook In Workbooks If OpenedBook.Name = fileName Then IsBookOpen = True Exit For End If Next '''''''''時間がかかっている?? If IsBookOpen = False Then Workbooks.Open (fileName) End If End If fileName = Dir() Loop

  • vba で全てのエクセルファイルを開く処理

    お世話になります。 下記のVBAソースで、特定のフォルダにあるエクセルを全て 開く処理をしているのですが、スマートに行えているか 疑問に思いました。 具体的には、「'''''''''時間がかかっている??」箇所で 無駄なこと・時間がかかっていないか疑問です。 目的としては、「vba で全てのエクセルファイルを開く処理」ですので、 (1)皆さんがされている「vba で全てのエクセルファイルを開く処理」 (2)下記ソースの「'''''''''時間がかかっている??」は時間がかかっていないか の、どちらかで、結構ですのでご返事頂ければ有り難いです。 宜しくお願いします。 ------------ソース----------------- ChDir (ThisWorkbook.Path & "\" & フォルダ) fileName = Dir("*.xls") Do While fileName <> "" If fileName <> ThisWorkbook.Name Then IsBookOpen = False '''''''''時間がかかっている?? For Each OpenedBook In Workbooks If OpenedBook.Name = fileName Then IsBookOpen = True Exit For End If Next '''''''''時間がかかっている?? If IsBookOpen = False Then Workbooks.Open (fileName) End If End If fileName = Dir() Loop

  • vba で全てのエクセルファイルを開く処理

    お世話になります。 下記のVBAソースで、特定のフォルダにあるエクセルを全て 開く処理をしているのですが、スマートに行えているか 疑問に思いました。 具体的には、「'''''''''時間がかかっている??」箇所で 無駄なこと・時間がかかっていないか疑問です。 目的としては、「vba で全てのエクセルファイルを開く処理」ですので、 (1)皆さんがされている「vba で全てのエクセルファイルを開く処理」 (2)下記ソースの「'''''''''時間がかかっている??」は時間がかかっていないか の、どちらかで、結構ですのでご返事頂ければ有り難いです。 宜しくお願いします。 ------------ソース----------------- ChDir (ThisWorkbook.Path & "\" & フォルダ) fileName = Dir("*.xls") Do While fileName <> "" If fileName <> ThisWorkbook.Name Then IsBookOpen = False '''''''''時間がかかっている?? For Each OpenedBook In Workbooks If OpenedBook.Name = fileName Then IsBookOpen = True Exit For End If Next '''''''''時間がかかっている?? If IsBookOpen = False Then Workbooks.Open (fileName) End If End If fileName = Dir() Loop

  • vba で全てのエクセルファイルを開く処理

    お世話になります。 下記のVBAソースで、特定のフォルダにあるエクセルを全て 開く処理をしているのですが、スマートに行えているか 疑問に思いました。 具体的には、「'''''''''時間がかかっている??」箇所で 無駄なこと・時間がかかっていないか疑問です。 目的としては、「vba で全てのエクセルファイルを開く処理」ですので、 (1)皆さんがされている「vba で全てのエクセルファイルを開く処理」 (2)下記ソースの「'''''''''時間がかかっている??」は時間がかかっていないか の、どちらかで、結構ですのでご返事頂ければ有り難いです。 宜しくお願いします。 ------------ソース----------------- ChDir (ThisWorkbook.Path & "\" & フォルダ) fileName = Dir("*.xls") Do While fileName <> "" If fileName <> ThisWorkbook.Name Then IsBookOpen = False '''''''''時間がかかっている?? For Each OpenedBook In Workbooks If OpenedBook.Name = fileName Then IsBookOpen = True Exit For End If Next '''''''''時間がかかっている?? If IsBookOpen = False Then Workbooks.Open (fileName) End If End If fileName = Dir() Loop

  • Excel オートフィルタのリストを取得したい

    ExcelのVBAです。 オートフィルタの▼をクリックすると、 重複していないリストが出ます。 このリストを列ごと(指定列)取得したいです。 できれば、Functionで組み、 配列に格納し、使いたいと思っています。 戻り値で配列は出来なかった気がしますが、 どうでしょうか… やりたいことをまとめます。 ---------------------- Call オートフィルタリスト("A") 配列をリストボックスに表示 選択し、上下の配置などを変更できるように (Excelも連動し、2行目と3行目の位置を変更したりすることができる) 新規追加 そのリスト最終行に新規データを入力 そして、それをExcelにも反映 ------------------------ Function オートフィルタリスト(指定列) 配列定義 指定列の範囲選択 オートフィルタのリストを配列に格納 (重複は削除します) 配列を返します。 End Function ------------------------------ まとめるどころか余計ぐちゃぐちゃした気もしますが、 回答よろしくお願い致します。

  • Excel オートフィルタのリストを取得したい

    ExcelのVBAです。 オートフィルタの▼をクリックすると、 重複していないリストが出ます。 このリストを列ごと(指定列)取得したいです。 できれば、Functionで組み、 配列に格納し、使いたいと思っています。 戻り値で配列は出来なかった気がしますが、 どうでしょうか… やりたいことをまとめます。 ---------------------- Call オートフィルタリスト("A") 配列をリストボックスに表示 選択し、上下の配置などを変更できるように (Excelも連動し、2行目と3行目の位置を変更したりすることができる) 新規追加 そのリスト最終行に新規データを入力 そして、それをExcelにも反映 ------------------------ Function オートフィルタリスト(指定列) 配列定義 指定列の範囲選択 オートフィルタのリストを配列に格納 (重複は削除します) 配列を返します。 End Function ------------------------------ まとめるどころか余計ぐちゃぐちゃした気もしますが、 回答よろしくお願い致します。

  • オートフィルタ 絞込み

    ExcelのVBAです。 作っているのですが、 絞り込む物がリストに無くても、 絞込み、空のページが表示されます。 例えば、    A   B   C 1  あ   K   A 2  い   K   A 3  う   L   A 上記のようなデータがある場合に、 B列のフィルタには K 、 L の絞込みリストが表示されます。 しかし、VBAの場合は K、L以外の入力で絞り込むことができます。 例)あいうえおでB列絞り込んでみる Selection.AutoFilter Field:=Range("B1").Column, _ Criteria1:="あいうえお" 当然のことですが、 あいうえおと表記された所はないため、 何も表示されません。 せめてポップアップを出し、中止を促したいです。 MsgBox "絞り込み条件がありません " MsgBox "絞り込めないため終了します" などなど。 できれば、エラーメッセージをだし 再入力を求めるなどあれば良いのですが、 なにか良い方法はありますか?

  • Cells.ColorIndex

    セル全体の色を取りたいのですが Cells.ColorIndex = xlAutomatic だと実行時エラー438になるのですが、 なぜでしょうか?

  • EXCEL|文字を検索する・・・

    EXCEL賢者のかたへ A   B 赤色 注意 青赤 注意 緑   - 黄色 注意 黄緑 注意 紫   - 上記は、A列に赤または、緑という文字があったら、B列で注意と表示するという内容です。 B列に入れる式を教えてください。

  • VBAでorを使用しているときの合致条件

    お世話になります。 vbaで、下記の様なif文があるときに、 iは、1,2,3のどれで合致しているか判別する方法はありますか? 現在は、下記のように処理(1)を繰り返し、書いているのを 一度で済ませたいと思っています。 -------現在---------------- if i=1 then '処理(1) 'iの値が1の時の処理 elseif i=2 then '処理(1) 'iの値が2の時の処理 elseif i=3 then '処理(1) 'iの値が3の時の処理 endif ----------------------------------- ----------------理想--------------------------- if i=1 or i=2 or i=3 then '処理(1) ★★ここの時点でiの値を取りたい endif '処理で、iの値によって分岐 ------------------------------------------

  • 【至急】VBAについて

    今会社でエクセルを作成しています。 使用しているエクセルは2003です。 Ctrl+Fの機能とオートフィルタの機能を足したものを作成しようとしています。  現在 入力している内容は下記になります。 Dim txt As String Dim target As Range Dim rng As Range Dim adr As String 'Set target = Range("A6:L6 & Rows.Count) ' txt = InputBox("検索する内容を記述して下さい。") If txt = "" Then Exit Sub Set rng = target.Find(txt, After:=target(target.Count), LookAt:=xlPart) If rng Is Nothing Then MsgBox "ありません" Exit Sub End If adr = rng.Address Do rng.Activate Set rng = Range("A6:L" & Rows.Count).FindNext(rng) If rng.Address = adr Then MsgBox "終わりに達しました" If MsgBox("続けて調べますか?", vbYesNo) = vbNo Then Exit Do Loop End Sub 項目はA6からL6までに記入されていきます。 一部内容は空白の部分もでますが、A6・B6は必須入力です。 下方向に内容が無限に増えて行きます。 現在エラーで “オブジェクト変数または With ブロック変数が設定されていません”と出てしまっています。 Set rng = target.Find(txt, After:=target(target.Count), LookAt:=xlPart) ここの部分がおかしいように思われます。 ですが、どう直せばいいのか分からず先に進めません… 皆様の知識をお借りできればと思い投稿致しました。 何卒宜しくお願い致します。

  • 【至急】VBAについて

    今会社でエクセルを作成しています。 使用しているエクセルは2003です。 Ctrl+Fの機能とオートフィルタの機能を足したものを作成しようとしています。  現在 入力している内容は下記になります。 Dim txt As String Dim target As Range Dim rng As Range Dim adr As String 'Set target = Range("A6:L6 & Rows.Count) ' txt = InputBox("検索する内容を記述して下さい。") If txt = "" Then Exit Sub Set rng = target.Find(txt, After:=target(target.Count), LookAt:=xlPart) If rng Is Nothing Then MsgBox "ありません" Exit Sub End If adr = rng.Address Do rng.Activate Set rng = Range("A6:L" & Rows.Count).FindNext(rng) If rng.Address = adr Then MsgBox "終わりに達しました" If MsgBox("続けて調べますか?", vbYesNo) = vbNo Then Exit Do Loop End Sub 項目はA6からL6までに記入されていきます。 一部内容は空白の部分もでますが、A6・B6は必須入力です。 下方向に内容が無限に増えて行きます。 現在エラーで “オブジェクト変数または With ブロック変数が設定されていません”と出てしまっています。 Set rng = target.Find(txt, After:=target(target.Count), LookAt:=xlPart) ここの部分がおかしいように思われます。 ですが、どう直せばいいのか分からず先に進めません… 皆様の知識をお借りできればと思い投稿致しました。 何卒宜しくお願い致します。

  • VBA 置換文字がみつからない時

    お世話になります。 VBAの文字列の置換で教えてください。 replaceを使用したときに、置換対象の文字がなかったら、 「元の値をそのまま返す」という形なのですが、 置換対象がなかったときは、その旨わかるようにしたいのですが、 方法あるでしょうか? ※毎回replaceの前でfind関数であるかないか、調べないと いけないのでしょうか? 何卒宜しくお願いします。