- ベストアンサー
Excel Setステートメントについて
Setステートメントの使いかたがよくわかりません。 普通に代入する場合。 SetStr = Range("A2") Setステートメントを使う場合。 Set SetStr = Range("A2") この2つに違いはあるのでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- Setステートメントの使い方について
いつもお世話になっています。 私は普段あまりVBを使わないので、素人同然なのですが、たまたま 業務でVBを使う事になったのですが、一つ疑問に思う事があります。 オブジェクトを扱う際に Set ステートメントと言うものがありますが、 この Set ステートメントを付けた時と、付けなかった時で何が違うのでしょうか? おそらく、メモリの利用方法が違うのかと思いますが、どなたか簡潔にお答え 頂けないでしょうか? 素人考えでは、普通に代入(Setステートメントを使わない)した場合は、 オブジェクトのリファレンスが渡り、Setステートメントを使用した場合は、 内容が渡るのかなぁ。。。 と、おぼろげに考えてはいるのですが。。。 よろしくお願い致します。
- ベストアンサー
- Visual Basic
- 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") 名前付きセルは指定できないなんてことはない、と思うのですが、どこがおかしいのでしょうか? アドバイスをお願いします。
- ベストアンサー
- オフィス系ソフト
- VBA Setステートメント
エクセル2002使用です。 B列に本日の日付が入るようにワークシートに関数(DAY関数)が入っています。 そのB列を検索して、同じ日付け(数字)がなければ、今日の日付を入力するVBAを組もうと思っているのですが、 Setステートメントで実行時エラー13になります。 ご教示いただけませんでしょうか? Private Sub CommandButton1_Click() ' 出勤ボタン B列に同日日付があればキャンセル Dim tuki, Hiduke1 As String Dim Hiduke1kekka As Variant tuki = Range("B3").Value Hiduke1 = Range("D3").Value Worksheets(tuki & "月").Activate Set Hiduke1kekka = ActiveSheet.Columns("B:B") _ .Find(What:=Hiduke1, After:=ActiveCell, LookIn:=xl, LookAt _ :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ False, MatchByte:=False, SearchFormat:=False) If Hiduke1kekka Is Nothing Then ActiveSheet.Range("D1000").End(xlUp).Select Selection.Value = "出" Worksheets("sheet1").Activate Else Worksheets("sheet1").Activate Exit Sub End If End Sub
- ベストアンサー
- オフィス系ソフト
- Setステートメントをまとめて記述する方法 (エクセル2000VBA)
お世話になります。 Setステートメントで以下のように書いて、シート名を省略して使っています。 Set a = ThisWorkbook.Worksheets("い") Set b = ThisWorkbook.Worksheets("ろ") Set c = ThisWorkbook.Worksheets("は") これをプロシージャ毎に書くとコードが長くなるので、先頭かどこかに1回書くだけで、全てのプロシージャで使えるようにしたいのですがどうしたら良いでしょうか? このようなプロシージャを実行したいのですが、 Private Sub CommandButton1_Click() a.Range("A2").Value = "データ1" b.Range("B4").Value = "データ2" c.Range("C9").Value = "データ3" End Sub (他にもコマンドボタンやチェックボックス用のプロシージャがあります) Setステートメントだけを先頭に書くと、 「プロシージャの外では無効です」というエラーが出ましたので、 Public Sub hensuu() Set a = ThisWorkbook.Worksheets("い") Set b = ThisWorkbook.Worksheets("ろ") Set c = ThisWorkbook.Worksheets("は") End Sub のようにしたら、「実行時エラー"424":オブジェクトが必要です」というエラーが出てしまいました。 どのようにしたらエラーが出ず正しく動くようになりますでしょうか?よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ExcelVBAのSetステートメントについて
お世話になります。 この土日で、ExcelVBAの勉強でもしようと思っていたのですが 掲題の件で躓いてしまいました。 具体的には、オブジェクト変数には、Setステートメントを使って 「オブジェクトへの参照」を代入するということらしいのですが、 恥ずかしながら理解できませんでした。 当方、財務・法務を担当しているのでプログラミングとは無縁の キャリアを歩んできました。 Setステートメントについて、知見のある方からご指導いただけると 幸いです。どうぞ、よろしくお願い申し上げます。
- ベストアンサー
- Excel(エクセル)
- ステートメントについて
お世話になります。 Option Explicitステートメント を記述するのとしない場合の違いが今一良く 分かりません。 どなたかサルにでも分かるようにご教示 頂けませんか? よろしくお願い致します。
- ベストアンサー
- Visual Basic
- SETステートメントについて
こんにちは^^ vb6.0のSETステートメントについて質問です。 SETの使い方がいまいちよくつかめないのですがどういった時に使われるものなのでしょうか?
- ベストアンサー
- Visual Basic
- エクセルVBAのSetステートメントについて(長文)
Sub PlusA002() Dim myTgCell As Range Dim myCounter As Integer Set myTgCell = Range("E2") Do Until myTgCell.Value = Empty If myTgCell.Value >= 80 Then myTgCell.Offset(0, 1).Value = "優" ElseIf myTgCell.Value < 80 And myTgCell.Value > 50 Then myTgCell.Offset(0, 1).Value = "良" Else myTgCell.Offset(0, 1).Value = "追試" End If Set myTgCell = myTgCell.Offset(1, 0) Loop End Sub このプログラムを例にして、Setステートメントについて質問します。Set myTgCell = Range("E2")を削除して実行すれば実行エラーという文言がでるし、またSet myTgCell = myTgCell.Offset(1, 0)を削除すればエクセルが固まるし、Setがこのプログラムに対して必要なのは判ります。しかし、Setがどのような役割を果たしているのかVisualBasicEditorのヘルプを見ても判りません。 どのような場面で使えるものなのですか?どなたか教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAのSETステートメントについて
マクロを組み込んだエクセルファイルが完成したのですが、ファイルサイズが大きくなってしまった ため、ファイルサイズを軽くするために現在 試行錯誤を繰り返しています。(シート数:50シート) ファイルサイズを軽くするために今までに取り組んできたのは下記の9項目です。 ・数式を値に変換 ・シートイベントプロシージャをThisWorkbookイベントに変換してマクロ構文を簡素化 ・隠れオブジェクトを全て削除(オブジェクト数を最小限・最小サイズに抑える) ・条件付書式、入力規則、名称登録を最小限に抑える ・必要な条件付書式のセル番地には必ず 『 $ 』 を付ける ・Offset 構文を最小限に抑える ・未使用セルの削除(最終セルの位置を正常化) ・Call マクロを多用してマクロ構文の情報量を極力減らす ・型に応じた変数宣言を徹底(バリアント変数扱いを最小限に抑える) ただ、『 型に応じた変数宣言 』 のSETステートメントの正しい使い方について私自身が良く理解 をしていないためにご指導を頂きたく投稿をさせて頂きました。不明なのは下記の2点です。 (1)『 SET a = ○○○○ 』 はオブジェクト型変数に対してのみ使用するものなのでしょうか? データ型(Date)や文字列型(String)の変数に対してはSETステートメントは使用しないもの なのでしょうか?仮にデータ型や文字列型変数に対してSETステートメントを使用した場合の メリットとデメリットについて教えて下さい。もしかして、データ型や文字列型の変数の場合は ただ単純に 『 SET 』 の文字が省略されているだけなのでしょうか。この基本的な部分の 理解ができていないので、理屈が分からずに困っております。 (2)『 SET a = Nothing 』 の対応はどこまで必要なのでしょうか? 上記(1)の質問にも絡むのですが、メモリリソースを開放してファイルサイズを軽くするためには 『 SET a = Nothing 』 が有効であるという情報がインターネット上に多数掲載されてますが データ型や文字列型変数に対してもプロシージャの末尾に 『 SET a = Nothing 』 の構文 を付け加えた方がファイルサイズが軽くなるものなのでしょうか? また、下記マクロ処理の場合にも 『 SET a = Nothing 』 の構文は必要なのでしょうか? 'Shをオブジェクト型変数として宣言 Dim Sh As Worksheet : : '全てのシートに対して以下の処理を実行 For Each Sh In Worksheets 固有のシートに対してではなく全てのシートに : 対してマクロを実行する処理においても : 末尾に 『 SET a = Nothing 』 の構文を '次のブックに対しても同様の処理を実行 付け加えた方がファイルサイズが軽くなる Next Sh ものなのでしょうか? とにかく、正攻法でファイルサイズを軽くする方法を探しています。コメントが長くなり過ぎてしまい ましたが、『 SETステートメントの正しい使用方法 』、『 ファイルサイズを軽くするための裏技 』 などについて、ご存知の方がいらっしゃいましたら是非教えて頂けますよう宜しくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
- excelのifステートメントのテストで…
御観覧ありがとうございます。 スパテクという本を買って、excelを勉強しようと、 サンプルを打ち込んでいて、何度かエラーになったりしましたが、 調べることや、入力ミスの確認で回避出来ていたのですが、 本通りに打っているのに、 「エラー438、オブジェクトは、このプロパティまたはメソッドをサポートしてません。」 と出ます。 エクセル2007です。入力したプロシージャは、 Option Explicit Dim nSample1_12 As Integer Sub Sample1_12() nSample1_12 = nSample1_12 + 1 ThisWorkbook.Worksheets("sheet1").Range("A1") = nSample1_12 End Sub Sub Sample1_13() Dim sA2 As String sA2 = ThisWorkbook.Worksheets("sheet1").Range("A2") If sA2 = "" Then ThisWorkbook.Worksheets("sheet1").Renge("A2") = "Sample1_13" ElseIf sA2 = "Sample1_13" Then ThisWorkbook.Worksheets("sheet1").Range("A2") = "基本の文法 ifステートメント" Else ThisWorkbook.Worksheets("sheet1").Range("A2") = "" End If End Sub このサンプル13を実行すると、A2にsample1_13と出るはずなそうなんですが…エラーになります。
- 締切済み
- その他([技術者向] コンピューター)