- 締切済み
Rangeオブジェクトを一時的に作成することは出来ますか。
こんにちは。 いままでは特定のシートにタイトルや数値、書式を入れて、そのRangeオブジェクトを参照してVBA作成を行っていました。 そこで今度はRangeオブジェクトを新たに作成して、特定セルのセルオブジェクトを、一時的にそこに格納して利用したら便利かと思いまして、色々と方法を考えましたが出来ませんでした。 もちろん個々のセル情報を一時的に保管することは出来ると思いますが、このような使い方が出来れば、今後のVBA作成作業で幅が出来ると思いまして、ご質問をさせて頂きます。 例; new X名 Rangeオブジェクト作成 X名 = Range("A1") Cells.Clear Range("B1").Formula=X名.Formula Range("B1").Interior.Color=X名.Interior.Color A1のオブジェクトを一時的に保管して、シートクリア後にその情報を利用してB1へ戻す。 こんな感じの使い方です。 宜しくお願い致します。
- みんなの回答 (4)
- 専門家の回答
関連するQ&A
- VBAのRangeオブジェクトについて
いつもお世話になっております。 VBAのRangeオブジェクトについてご教示下さい。 例えば下記のPGを組みます。 Sub test() Dim r As Excel.Range Set r = Me.Range("A1") Debug.Print r.Cells.Count End Sub この時、Debug.Printには"1"と表示されます。 Debug.Printでブレイクを置き、ここでA列を削除するとDebug.printでエラーが出てしまいます。 Rangeオブジェクト生成後、もしも参照先のセルが削除してしまった場合、条件分岐の処理を入れたいのですが、どのように処理をいれればよろしいでしょうか? セル削除後、Rangeのプロパティを参照した時点でエラーが発生してしまいます。 Typeで確認するとRangeがちゃんと取れるのですが・・・。 "参照先のセルが消されたかどうか"を判別する方法はあるのでしょうか?
- ベストアンサー
- Visual Basic
- エクセルRangeオブジェクトの使い方
エクセルで名簿を作ろうとしています。よくあることですが、入力を簡単にするため、入力メニューを作り、一人目を入力したら次の行に行くようにマクロを考えているのですが、その前に最初のセルを選択させようと下記のように記述したところ、コンパイル時に実行時エラー'1004'アプリケーション定義またはオブジェクト定義エラーです。というエラーになります。 また、作成したコマンドボタンから実行しても実行時エラー'1004'RangeクラスのSelectメソッドが失敗しましたというエラーになります。 Rangeオブジェクトの記載の仕方は間違いないと思うのですが....ちなみに書こうとしている意味は、表が、全く登録がない場合、最初B2セルから記載していくように考え、追加登録していくときはB1セル(項目に当たる行)から空白行になるまで改行するように考えました。 記述内容 Sub CommandButton1_Click() Worksheets("名簿").Select If Range("B2").Value = "" Then Range("B2").Select ←エラーになる行です Else Range("B1").Select Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Select End If 名簿登録.Show End Sub
- ベストアンサー
- オフィス系ソフト
- rangeの意味
xをワークシートオブジェクトとすると、 With x.range("A1")のrange("A1")とは 何を意味しているんでしょうか?セルA1を 参照していますよということでしょうか?
- ベストアンサー
- Windows XP
- Excel: SetステートメントでRangeオブジェクトに名前付きセルを指定したい
Excel VBAです。 RangeオブジェクトにSetステートメントで名前付きセルを指定したのですが、結果、RangeオブジェクトはEmpty値になってしまいます。名前付きではない別のセルでやってみるとうまくいきます。 Dim sSheet as Worksheet Dim wRange as Range Worksheets("Sheet1").Select 【失敗する例:名前付きセルを指定】 Set wRange=Range("c_ControlNo") 【うまくいく例:セルA1を指定】 Set wRange=Range("A1") 名前付きセルは指定できないなんてことはない、と思うのですが、どこがおかしいのでしょうか? アドバイスをお願いします。
- ベストアンサー
- オフィス系ソフト
- 2次方程式を解くマクロを作成したのですが解けません。
2次方程式を解くマクロを作成したのですが解けません。 マクロの授業で2次方程式を解くマクロを作成したのですが途中で何がなんだかわかんなくなってしまいました。 どこがどう間違っているのかわからない初心者なのでわかりやすい解説よろしくお願いします。 ■二次方程式の解を求めるマクロ マクロ名 niji 条件 課題のファイルのsheet1を開き、 A1にxの二乗の係数 C3にxの係数 E3に定数項 を入力した場合 判別式の結果より、I3に解の状態を表示させる 表示は 2つの異なる実根 重根 複素数根 のいずれかとする。 そして、J3、K3に二次方程式の解を表示させる。解は二次方程式の解の公式 より求める。 複素数は i としてあらわす。 以下作成したマクロ↓ Sub niji() Range("A3").Select a = ActiveCell.Formula Range("C3").Select b = ActiveCell.Formula b2 = -b / 2 Range("E3").Select c = ActiveCell.Formula d = b * b - 4 * a * c Range("J3,K3").Formula = "" 'ActiveCell.Formula = "" If d > 0 Then x1 = b2 + Sqr(d) / 2 x2 = b2 - Sqr(d) / 2 Range("J2").Select ActiveCell.Formula = "解1" Range("J3").Select ActiveCell.Formula = Str$(x1) Range("K2").Select ActiveCell.Formula = "解2" Range("K3").Select ActiveCell.Formula = Str$(x2) End If If d = 0 Then Range("J2").Select ActiveCell.Formula = "x =" Range("J3").Select ActiveCell.Formula = Str$(b2) End If If d < 0 Then d2 = Sqr(-d) / 2 Range("J2").Select ActiveCell.Formula = "x1 =" Range("J3").Select ActiveCell.Formula = Str$(b2) + " +- i " + Str$(d2) End If If "J3" = "K3" Then Range("I3").Select ActiveCell.Formula = "重解" End If If "J3" > "K3" Then Range("I3").Select ActiveCell.Formula = "2つの異なる実根" End If If "J3" < "K3" Then Range("I3").Select ActiveCell.Formula = "2つの異なる実根" End If Range("b8").Select End Sub マクロ初心者なのでわかりやすい解説お願いします。
- 締切済み
- オフィス系ソフト
- 【Excel2010】VBAのFormulaの意味
エクセル2010を使っている者です。 離れたセルの数字を置き換えられたらなと思ってその方法を探していたら、以下のマクロが見つかりました。 VBAは少しだけかじっているのでFormulaってなんだろうと思って、Formulaを消した状態でマクロを実行してみたのですが、消す前と同様にうまく動きました。 Formulaとはどういったものなのでしょうか?また、この場合、使う意味はあったのでしょうか? Sub swap() Dim w, x As Range, y As Range If Selection.Areas.Count <> 2 Then Exit Sub Set x = Selection.Areas(1) Set y = Selection.Areas(2) w = x.Formula x.Formula = y.Formula y.Formula = w End Sub それと、formulaのことを自分で調べようと思って検索していたら以下の式が見つかりました。 理解できなかったのですが、この場合もFoumulaと書く意味はあるのでしょうか? Range("A1").Formula = "=TODAY()" Range("B1").Formula = "=NOW()" Range("A5").Value = "合計" Range("B5").Formula = "=$B$2+$B$3+$B$4" よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- Excel VBA 選択した範囲の1行目に色を付けたい
VBA初心者です。 セルB4~F15に表が作成されています。 プロシージャを実行して、セルB5~F15にブルー。表1行目のセルB4とF4のみに赤の色を付けるというコードを記述したいのです。 以下のように記述しました。 Sub セルに色() Range("B4").Select ActiveCell.CurrentRegion.Select Selection.Interior.ColorIndex = 8 Selection.Range(Cells(1, 1),Cells(1,5)).Interior.ColorIndex = 3 End Sub Rangeでは連続シートになるため、Unionに変更してみましたが、 Unionはオブジェクトがサポートされていない旨のエラーが出ました。 どのように記述すればよいでしょうか? どうぞよろしくお願いいたします。
- ベストアンサー
- その他MS Office製品
- VBAのオブジェクトブラウザの見方
VBAのオブジェクトブラウザの見方がよくわからないので教えてください。 たとえば、オブジェクトブラウザから「countif」を見ているのですが、 Function CountIf(Arg1 As Range, Arg2) As Double の部分の見方がよくわかりません。 (1)先頭の「Function」は、ワークシート関数だからFunctionと付いているのでしょうか? (2)「Arg1 As Range, Arg2」となっていますが、なぜ、Arg2の後に「As Range」がつかないのでしょうか? セルの範囲ではなく、VBAで指定できるからですか? (3)「 As Double」は何を指しているのでしょうか? 戻り値ですか? 数値で返ってくるからDoubleなのですか? 以上です。よろしくお願い致します。
- ベストアンサー
- Visual Basic
- Range("Sheet2!A1")が何故通る?
Excel VBAでRange関数を使っていて不思議に思う事があったので、少し質問させて下さい。 バージョンは、Office Standard 2010のVer14(32bit)です。 [Range]は、実際には[ActiveSheet.Range]の省略という認識でした。 そして、例えばSheet1がアクティブな状態で[ActiveSheet.Range("Sheet2!A1")]とすればエラーがでます。 [Range(Worksheets("Sheet2").Range("A1"))]でもエラーになります。 ところがこれが、[Range("Sheet2!A1")]だけにすると、問題なくSheet2のA1セルが取得できるのです。 セルに名前を付けた場合も、同じようにアクティブでないシートのセルが取得できました。 場合によって、Rangeの親オブジェクトがActiveSheetであったりなかったりするようなのですが、これはどのような仕様なのでしょうか? Microsoft Docsをざっと見たのですが、載ってなさそうだったので。 以下、自分がチェックに使ったコードです。 Sheet2!A1セルにShTwoという名前を付けています。 Sub test() Debug.Print Range("A1").Address Debug.Print Range("A1").Parent.Name ' Debug.Print ActiveSheet.Range("Sheet2!A1").Address '1004:アプリケーション定義またはオブジェクト定義のエラーです Debug.Print Range("Sheet2!A1").Address Debug.Print Range("Sheet2!A1").Parent.Name ' Debug.Print ActiveSheet.Range("ShTwo").Address'1004:アプリケーション定義またはオブジェクト定義のエラーです Debug.Print Range("ShTwo").Address Debug.Print Range("ShTwo").Parent.Name ' Debug.Print ActiveSheet.Range(Worksheets("Sheet2").Range("A1")).Address '1004:アプリケーション定義またはオブジェクト定義のエラーです ' Debug.Print Range(Worksheets("Sheet2").Range("A1")).Address ''Range'メソッドは失敗しました:'_Global'オブジェクト End Sub
- ベストアンサー
- Excel(エクセル)
- C#でのExcel操作について.(Rangeオブジェクトへの複数範囲設定)
C#でExcelのグラフを作成させるプログラムを書いるのですが,Rangeオブジェクトへの離れたセルの複数範囲を指定したいのですが,いろいろ調べてみましたがどうしても解決できません. 調べた限りではVBではできるようですが,C#ではできないのでしょうか? Excel.ChartObjects chartObjects =(Excel.ChartObjects)oSheet.ChartObjects(Type.Missing); Excel.ChartObject chartObj = chartObjects.Add(100, 100, 700, 400); Excel.Chart chart = chartObj.Chart; Excel.Range chartRange = oSheet.get_Range("B1","B3"); /*↑の部分で("B1:B3,B5:B8,C5")のようなことをしたいです.RangeにAddメソッドのようなものがあればと思っているのですが無いみたいなので‥‥*/ chart.SetSourceData(chartRange,Excel.XlRowCol.xlColumns); Excel.SeriesCollection seriesCollection=(Excel.SeriesCollection)chart.SeriesCollection(Type.Missing); よろしくお願いします.
- ベストアンサー
- その他(プログラミング・開発)
お礼
ご回答有り難う御座います。 内容了解しております。 キャリア2年と仰っていますので、 私も簡単に紹介致します。 社内SEで汎用機からオフコンに移りCOBOLを中心に長らくやってきました。 4,5年前からパソコン系も手掛けています。 VBAを本格的にやり始めたのは1、2年と言ったところでしょうか。やらなければと思いながら月日がたってしまいました。