cj_mover の回答履歴

全798件中781~798件表示
  • Excel 2003 VBA Worksheet_Changeの動作速度について

    Excel2003を使用しています。 セルに入力した文字列の前後のスペースをカットする為にTRIMを用いて Private Sub Worksheet_Change(ByVal Target As Range) Target.Value = Trim(Target.Text) End Sub と記述したところ、動作は思惑通りなのですが、処理速度が異様に重いです。 私の環境(VISTA Home Premium,Core2 Duo 2.20GHz)では、セル値を変更した後必ず3~5秒処理が固まります。 不本意ですが Private Sub Worksheet_SelectionChange(ByVal Target As Range) Target.Value = Trim(Target.Text) End Sub と、Worksheet_SelectionChangeを使うと全くストレスを感じず処理されますが、セルを再度選択してやらないとTRIMされませんし…。 私の環境だけがWorksheet_Changeでの処理が遅いのでしょうか? よく似た環境のみなさんはどうでしょう? 原因が分からなくて気持ち悪いです… 私個人の環境の問題? Excel2003の問題? 記述の問題? 何かご存じの方居られましたらよろしくお願いします。

  • エクセルのブックの値のみのコピー

    お世話になります。 エクセルに計算式をたくさん織り込んで作成したら重くなってしまいました。1ブックが1.3メガくらいになってしまいました。毎月40ブック程度使用するため、1年間で換算すると1.3メガ×40ブック×12ヶ月で624メガとなってしまいます。できれば保存しておくのは値だけあればいいので、ブック内の値を計算式を排除して値のみの保存にしたいと考えています。1ブックが30シートほどあるのでシート毎のコピーは大変手間がかかるのでできればブックごとコピーしたいのですが、よい方法はありますでしょうか? ご教授お願いいたします。

  • EXCELで2行データの並べ替えは可能か?

    EXCELの並べ替えについての質問です。 例えば社員のデータで1人目が… 1行目に、所属、名前、入社日、生年月日、住所… 2行目に、基本給、管理職手当、職務手当、通勤手当… 2人目が3行目、4行目、3人目が5行目、6行目… といった具合に社員の1人分のデータが2行にまたがっていた場合、例えば、生年月日順に並べ替えをし、うまく1人分2行くっ付いた状態で並べ替えすることはできるでしょうか? 印刷レイアウト上、どうしても2行で1データとするケースがあります。 よろしくお願いいたします。

  • EXCEL VBAでApplication.waitを使わずに一時停止させたい

    マクロの実行中に、その処理を、条件分岐によってある一定時間だけ止めて、また再開させるようなプログラムを作りたいと考えています。 Application.Waitを使えば、可能というとこまではわかったのですが、それだとマクロ停止中にEXCEL上での一切の操作(たとえばスクロール)ができなくなるので、マクロだけ停止させておいて、他の操作はできるようなやり方はありませんでしょうか? ちなみに、当方の使用OSはXP、EXCELは2007です。VBAは、はじめて取り組む超初心者で、以下のコードもネットやこちらのサイトを探しまくって、ようやくここまでできました。 なお、本マクロで具体的にやりたいことは、楽天証券のRSSというアプリケーションから、EXCELの特定の列に、1行目から順番に、リアルタイムで株価が書き込まれていきます。その株価を監視して、ある一定以上になったら、音で知らせるということをやりたいのです。その際、株価が書き込まれていく間隔は、数秒~数分です。 長々と書きましたが、ご教授いただけると助かります。 <参考:現在のマクロ> Sub Test() Dim waitTime As Variant Dim 繰り返し As Long For 繰り返し = 1 To 10 If Cells(繰り返し, 1).Value >= 10000 Then Shell "mplay32.exe /play /close C:\WINDOWS\Media\notify.wav" ElseIf Cells(繰り返し, 1).Value = Empty Then waitTime = Now + TimeValue("0:00:05") Application.Wait waitTime End If Next 繰り返し End Sub

  • 【Excel VBA】シートコピー時、マクロコードはコピーしたくない

    ws.copy Before:=Workbooks(File).Sheets(1) Windows(File).Activate Cells.Select Selection.copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False 上記コードで、シートのコピー・貼付を行っていますが、 コピー元シートのコードも引き継がれてしまいます。 引き継がれないようにコピーしたいのですが、可能でしょうか? 可不可について、 可能ならばそのやり方(コード)を教えていただけないでしょうか? よろしくお願いします。

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • For Nextマクロの高速化についてご教示ください。

    エクセル2000です。 以下は、ワークシートのA列の2行目以降に赤(Interior.ColorIndex = 3 )のセルがあればその行を非表示に、1行目のA列以降に赤いセルがあればその列を非表示にする単純なマクロです。通常はストレスなく動いてくれるのですが、あるBOOKにこのマクロを設定したら、わずか200行程度の処理に1分以上かかってしまいました。 そのBOOKは1.4MBあるのでそのせいとも思えるのですが、それにしても時間がかかりすぎるような気もします。 高速化する方法がありましたらご教示くださいませ。 (o。_。)oペコッ Private Sub 行列非表示() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveSheet x = .Cells(1, 1).SpecialCells(xlLastCell).Row y = .Cells(1, 1).SpecialCells(xlLastCell).Column For i = 2 To x If .Cells(i, "A").Interior.ColorIndex = 3 Then .Rows(i).Hidden = True End If Application.StatusBar = i Next i For n = 1 To y If .Cells(1, n).Interior.ColorIndex = 3 Then .Columns(n).Hidden = True End If Application.StatusBar = n Next n End With Application.StatusBar = "" Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Exit Sub End Sub

  • Visual BasicのUserFormが閉じづらい

    Excel2000,VisualBasicのUserFormの閉じ方で困っています。 マクロ起動中にUserForm1.Show,UserForm1.Hide,UserForm2.Show,UserForm2.Hideを 何度も繰り返していると、同じUserFormが重複してメモリーに残っている 状態で、閉じるために「×」を何度もクリックしています。 作業を長時間するとフリーズ状態もしくはエラーになります。 尚、Load.Unloadでも同じ結果になりました。 どなたか解決方法を教えてください、宜しくお願いします。

  • ExcelのVBAで、変数の型の種類の調べ方

    Asキーワードで、変数の型を調べる方法を教えてください。 CommandBarのCommandBarButtonのStateの状態を変更させようとして次のようなSubを作りました。 Sub testCommandBar() Dim MyCommandBar As CommandBar Dim MyControl As CommandBarButton Set MyCommandBar = Application.CommandBars("test") For Each MyControl In MyCommandBar.Controls MyControl.State = msoButtonMixed MyControl.State = msoButtonDown MyControl.State = msoButtonUp Next End Sub しかし、コントロールにボタンとコンボボックスを配置すると、ローカルウィンドで、型を見てもCommandBarButtonと、CommandBarComboBoxと型が分かれているため、当然上記のままだとエラーになります。で、安易にObject型(最上位)にするのではなくもうひとつ上のCommandBarButtonと、CommandBarComboBox共通の型ってどうやって調べればいいのでしょうか? たとえば、「Sheet1」と「Sheet2」の型の上位といえば「WookSheet」のように??(←これが正しいかも自信がないですが) 自分では、「Sheets」「WookSheet」「SheetXX」はそれぞれ型が違うってのは理解しているつもりです。(XXは数字) よろしくお願いいたします。 ついでに、上記のコードだと、ボタンだけの配置で、ステップインで実行させても、ボタンの状態が変化しません。別の質問でと思ったのですが、あつかましく教えていただければ幸いです。

  • Excelのマクロの画面でスクロールしたい。

    Excelのスプレッドシートではマウスのホイールでスクロール出来ますが、マクロのコードを書いている画面ではホイールでのカーソル移動ができません。 仕方がないので方向キーでカーソルを移動しています。 ホイールを使う方法があれば教えていただきたいのですが。

  • マクロ A列からD列のセル内の字を削除

    マクロを作っています。選択した行のA列からE列のセル内の字を削除したいのですが、指定の仕方がわかりません。行はその都度変更します。よろしくお願いします。

  • Excel_VBAでハイパーリンクの削除時の書式

    いつもお世話になっております。 ExcelのVBAで、ハイパーリンクを削除すると、一緒に書式もクリアーされてしまいます。 罫線と、背景色を残す方法ってあるのでしょうか? 一応、背景色だけ保存しておいて、後で、復帰させようと考えましたが、罫線も一時待避させるとなると、ちょっと大げさになるので、何か?知恵をお借り出来ないでしょうか? Private Sub CommandButton11_Click() 'リンク解除 Dim MyColor As Integer MyColor = maillist.Range("メールアドレス").Range"A1").Interior.ColorIndex maillist.Range("メールアドレス").Hyperlinks.Delete maillist.Range("メールアドレス").Interior.ColorIndex = MyColor End Sub "メールアドレス"範囲を別の所にコピーしておき、値だけ削除して元に戻して・・・なども考えてみましたが・・・?←これは、余計かも? 宜しくお願い致します。

  • Excelのマクロ教えてください

    初めまして。 以下のようなマクロが欲しいのですが、知識不足のため、どうしたらよのかわからず困っております。 ウェブで色々と調べてやってみましたが、期待どおりの結果を得られませんでした。 どなたかお教えいただけたら幸いです。 行いたいのは、例えば、   セルA1に文字列『1. abc』が入っているとき、先頭の番号『1』の部分だけ取り出し   (または . 以下を除いて)、セルA1の内容を数字型の『1』に書き換える という動作です。 複数のセルをドラッグして選択し、マクロのショートカットで一発変換 できたら…と思っております。 変換したい部分のセルの内容はすべて、『1. abc』のように、文字列で 「1~7の数字」、「半角の.」、「半角スペース」、「英単語」 の順になっています。 簡単なことなのかもしれませんが、自分にはさっぱりでした… どなたか回答をお願いいたします。m(_ _)m

  • ExcelVBAの知恵をお貸しください。

    一つのシートで、複数のセル範囲を選択している場合に、セル範囲を選択しているのか?列、行を選択しているのかを判別する方法として次のようなのを考えました。 それとなく動いているのですが、なんとなくスマートでなく、場当たり的な感じがしますが、どのようにすればいいのか判りません!! どなたか、アドバイス頂けないでしょうか?宜しくお願いいたします。 Sub test()  Dim myRang As Range  Dim myArry As Variant  For Each myRang In Selection.Areas myArry = Split(Replace(myRang.Address, ":", ""), "$") If UBound(myArry) <> 2 Then   MsgBox "セル範囲を選択しています。" & myRang.Address Else If IsNumeric(myArry(1)) Then MsgBox "行を選択しています。" & myRang.Address Else MsgBox "列を選択しています。" & myRang.Address End If End If  Next End Sub