- ベストアンサー
エクセルVBA ファイルを変更されても問題なく作動させるには?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
色々な方法が考えられます 1.C列に名前をつけて、Reng で参照する 例:"C列"という名前にした場合 Sub TEST() For Each c In Range("C列") If c.Value = (対象) Then (処理) End If Next c End Sub 2.特定の文字列を参照する 一番上に1行挿入し、特定の文字を入れておきます その行を非表示にしておいて、VBAから1行目を横にサーチしていき 特定の文字が入っている列を見つける 等....
その他の回答 (2)
- NCU
- ベストアンサー率10% (32/318)
セルまたはセル範囲に名前を付けます。 ただしそのためだけに追加するより、できればどうせ必要な名前に相乗りする方向で考えるといいと思います。 コードの中にセル座標をそのまま書くのは、よほど例外的な場合だけです。
お礼
回答ありがとうございます。
- papayuka
- ベストアンサー率45% (1388/3066)
実行時に処理列などを指定させるのが良いと思います。 例では選んだセルの列 1~26行にA~Zを入力します。 Sub Test() Dim r On Error GoTo ER: Set r = Application.InputBox("処理する列を含むセルを選択", "セル選択", Type:=8) '適当な処理 For i = 1 To 26 ActiveSheet.Cells(i, r.Cells(1, 1).Column).Value = Chr(i + 64) Next i ER: End Sub
お礼
回答ありがとうございます。 確かに色々な列に対して処理したいしたい場合は、列が選択できると言うのは大変便利ですよね。(実際に使ってます) でも逆に決まった列に対して処理したい場合は、選ばなければならないというのは面倒です。(人間はわがままです)
関連するQ&A
- VBAにて
初めまして、宜しくお願いします。 エクセルのVBAの処理を最近やり始めたのですが、私には ハードルが高くて、よく解りません。。。 出来るのかも解らないのですが、それもふまえて教えて いただけると助かります。 A列:名称 B列:概要 C列:ファイル名 D列:フォルダ構成 のエクセルファイルがあります。 各列ともに、何行にも渡りデータが格納されております。 これを読み込んで、ローカルにある指定のエクセルファイル(シート) をD列にある、C列のファイルに全てコピーしていきたいのです。 そのかたわらで1行ずつの処理結果を、ログに出力していくような 感じにしたいのですけど出来ますか?? 教えて下さい。 あと、もし可能であればフォルダがネットワーク上にあっても 可能なのか知りたいです。 宜しくお願いします。
- 締切済み
- その他(プログラミング・開発)
- エクセルVBAでVBAの修正は出来るのでしょうか?
エクセルVBAでVBAの修正は出来るのでしょうか? あるエクセルファイルにマクロを組み込んでいます(ユーザーフォームも使用)。 このエクセルファイルを複数個フォルダ内にコピーしています。 このコピーした全てのファイルのマクロの修正をVBAで出来ないかと考えています。 修正箇所はモジュール内のコード修正、モジュールの追加、既存のユーザーフォームにボタン等の追加等です。 エクセルは2003を使用しています。 どなたか教えてください。
- 締切済み
- Visual Basic
- Excel VBA でファイルが開かれているか確認する
ExcelのVBAで、book1.xlsというファイルが現在開かれているか確認するにはどんなプロパティを使えばいいでしょうか? 実際にやりたい事は、book1.xlsに対して処理するマクロがあるのですが、そのbook1.xlsが開かれていなければ処理が出来ないのでマクロが入っているファイルを閉じる。というものです。
- ベストアンサー
- オフィス系ソフト
- エクセルのVBAについて
エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- Excel VBA セルの値を変更後にVBA作動
Excel VBAを活用して、特定のセルの値が変更されたときに、VBA処理を発動させることになりました。 処理といたしましては、C列(3列目)の4行目以下の空白セルに数値を入力するか、セルに入力されている数値を変更した場合にVBAを発動させたいです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 3 And Target.Row >= 4 Then MsgBox "セルの値が更新されました" End If End Sub 上記のコードを実行してみたところ、3列目(C列)の4行目を選択した段階でVBAが作動してしまいます。 セルの値変更後に作動するようにするには、どう修正すればよろしいでしょうか?
- ベストアンサー
- Visual Basic
- VBAでエクセルからのファイル名とテキスト化を自動で実行する方法
マクロを実行して、エクセルのセルからファイル名とテキストファイルを自動で出力したいのですが、VBA初心者なのでプログラムの書き方がわかりません。 どうかVBAのプログラムの書き方を教えて下さい。 【マクロ実行前のエクセル状態】 1.エクセルのA列にファイル名1を入力 2.エクセルのB列にファイル名2を入力 3.エクセルのC列にテキスト出力させたい文字列を入力 【期待のマクロ動作】 ファイル名1+ファイル名2のファイル名でC列の文字列をテキストファイルで出力。 《例》 A B C 1 2 あ ⇒マクロ実行⇒ファイル名『12』テキスト内容『あ』 3 4 い ⇒マクロ実行⇒ファイル名『34』テキスト内容『い』 5 6 う ⇒マクロ実行⇒ファイル名『56』テキスト内容『う』 7 8 え ⇒マクロ実行⇒ファイル名『78』テキスト内容『え』 ・ ・ ・ ・ 上記の様に、一回のマクロ実行で入力されている列のセル全て がファイル名付きのテキストファイルとして出力をさせたいです。 申し訳ありませんが、よろしくお願いいたします。
- 締切済み
- Visual Basic
- 他のExcelファイルのVBAコードを検索したい
他のExcelファイルに書かれたVBAコードに、ある特定のキーワード(パス名など)が使われているかを自動的に調べるためのVBAを書きたいと思っています。 仕事で使っているマクロが書かれたExcelファイルからある特定の処理をしているマクロを含むものを検索したいのですが、検索するExcelファイルが膨大なため、順番にExcelファイルを開いてVBAコードをチェックしていく工程をマクロ化したいのです。ファイルを順に開いていく処理はマクロ化できるのですが、書かれたVBAコードのチェックをどうしたらよいか悩んでいます。 「VBAコードに対して検索する」または「VBAコードを1行ずつ変数に代入する」、「モジュールシートをテキストファイルに出力する」などの処理が自動化できれば対応できそうなのですが、そのような処理をExcelVBAで作成できるでしょうか。 なお環境はWindowsXPのExcel2003です。 よろしくお願いいたします。
- ベストアンサー
- Visual Basic
- VBAでエクセルからエクセルのファイルを開くには?
D:\に db1.mdb Book1.xls があります。 db1.mdbのフォームのコマンドボタンをクリックして Book1.xlsを開きたいのですが VBAコードをご教授いただけますか? (マクロではなくVBAコードが知りたいです) エクセルからエクセルのファイルを開くなら Workbooks.Open ファイルのフルパス で出来ました。 ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- EXCEL- VBA(CSVファイル→インポート)
A列~F列になる複数(100個以上)のCSVファイルをエクセルファイルにインポートして更に個別にエクセルファイルとして保存したいのですが VBAでできるのでしょうか? 記憶マクロでやったらどうにもうまくいきません。 エクセルのVBAについては ほとんど知識ゼロなので困っております。 大変厚かましくありますが どなた様かご教授お願いできたらと思います!! 【元のファイルの状態】 ◆ファイル名「*.CSV」*は文字数それぞれ違います。 <例:tanaka.xls だったり 09福島.xls> ◆入っているドライブ TEXT;C:\Documents and Settings\AA_B\デスクトップ\練習 ◆A~F列にデータが入っている 【やりたいこと】 (1)A~F列はカンマ区切りで全て文字列としたい (2)元のファイル名でエクセルとして保存したい「*.XLS」
- ベストアンサー
- オフィス系ソフト
お礼
回答ありがとうございます。 このような方法が定番ということなのですね。