• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:セル指定の文字列を、直接ではなく変数にしたい。)

Excelのセル指定を変数化する方法

このQ&Aのポイント
  • ExcelのVBEを使用してセル指定の文字列を変数化する方法について解説します。
  • セル名を変数に格納し、その変数を使用してセルの値を取得したり、操作を行ったりする方法を紹介します。
  • スマートなやり方としては、セルの名前を変数化するだけでなく、変数を使用せずに直接参照する方法もあります。

質問者が選んだベストアンサー

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 名前を変数に入れるのではなく、セル自体への参照を変数に格納しておけばいいのでは? Dim rg As Range Set rg = Range("c_Reporter") If rg.Value = "" Then   (省略)   rg.Activate End If

sarutobi
質問者

お礼

あ、そうですね!この方が断然スマートですね。 早速のご回答、ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA セルの値13が数値だったり文字列だったり

    セルに入った「13」が数値の場合でも文字列の場合でも処理出来る方法はありませんか? 例えば If Range("A1").Value=13 Then 処理 Endif セルの値が文字列"13"の場合、同じと認識してくれません。 いい方法はないでしょうか?

  • ExcelVBAの変数を使うコツ

    matyuといいます。よろしくお願い致します。 基本的な部分の質問です。 VBAでプログラムを考える際に変数を使うタイミングは非常に多いと思いますが、 どういうタイミングでどういう部分を変数として扱えばいいか分からなくて困っています。 添付したファイルのような問題があったとします。 この問題では、日給の部分を"kyuyo"として宣言していますが、 私が考えると曜日も平日と休日で変化するし、時給も1000円と1200円、勤務時間も何が入るか分からないな・・・となってしまい、いくつもいくつも変数にしようとして結果答えと違ってしまいます。 どこに着目して必要最小限の変数宣言ですっきりしたプロシージャーを書くようにしたらよいのでしょうか? 私が考えるに、最終的に導きだされなくてはならないのは"日給(kyuyo)"だからという考え方でいいのでしょうか 【問題】 セル【C16】に曜日として「平日」「休日」を、【D16】に勤務時間を入力してプロシージャを実行すると、日給をセル【E16】に表示する「練習1」プロシージャを作成しましょう。 また、勤務時間が空欄の場合はセル【E16】に「休み」と表示されるようにします。 【この問題の回答】 Sub 練習1() Dim kyuyo As Currency If Range("D16").Value = "" Then Range("E16").Value = "休み" Else If Range("C16").Value = "平日" Then kyuyo = 1000 * Range("D16").Value Range("E16").Value = kyuyo ElseIf Range("C16").Value = "休日" Then kyuyo = 1200 * Range("D16").Value Range("E16").Value = kyuyo End If End If End Sub

  • 文字列の変換

    12月以降13月で表示されているセルを1月に変換したいのですが 下記のようにセルM4にデータがあれば13月が入るので1月 また来月になると2月分が14月として入るのでElseif以下にしたいのですが 実行されません。valueを"13月"としてみたが同じでした。 ちなみに1月~14月までは文字列にしたのですが、これが原因なのでしょうか? 何かアドバイスがあればお願い致します。  If   Range("M4") = value Then  Range("M4") = "1月"   Elseif Range("M4:N4") = value Then   Range("M4") = "1月"   Range("N4") = "2月"  End If

  • エクセル VBA セル範囲の一部解除

    rangeオブジェクト型変数にセル範囲を代入した後、一部のセルを解除したいのです。 グラフを描くためにc列とE列をデータに散布図を描こうとしてます。セル範囲の選択はrange型変数に代入しました。しかしゼロ以下の値のセルは削除したいのです。 for each c in datacell if c.value <0 then c.value="" next c 上記のようにすると目的は達しますが、ワークシート上の値も削除されてしまい、好ましくありません。良い方法はないでしょうか?

  • Excelマクロ:変数でセル範囲指定

    マクロの迷い人です。 Excelの表をマクロで印刷しようと思っています。 行の数が毎回違うため、最終セルもその都度指定しなければなりません。 A1 B1 A2 B2 A3 B3 A4 B4 この例で、A5 B5 以降は空セルとします。 印刷範囲を Range("A1:B4")と書かずに、そのときどきのアクティブセルを変数に代入し、変数を使って範囲指定したいのです。 Sub MacroTest () Dim a As Variant Dim b As Variant Range("B1").Activate Do While a <> 0 ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る a = ActiveCell.Value Loop ActiveCell.Offset(-1, 0).Activate '上の行に移る b = ActiveCell.Value Range("A1:"& b).Select End Sub こうしてみましたがダメでした。 デバッグの方法がわからないので教えて下さい。よろしくお願いします。

  • Excelのマクロで、IFを複数セルに指定するには

    セルA1、B1、C1をダブルクリックすると各セルの値が+1ずつ増える Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address = "$A$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$B$1" Then Target.Value = Target.Value + 1: Cancel = True If Target.Address = "$C$1" Then Target.Value = Target.Value + 1: Cancel = True End Sub というマクロを使用致しておりますが、これに追加で セルA1をダブルクリックした時に、A1と同時にセルC1も+1増やせる 方法があれば教えて頂けると幸いです。 宜しくお願い致します。

  • 変数に範囲もしくはワイルドカードを指定する方法

    エクセルで変数に A > -100 and < 100のように数値を指定することはできるでしょうか。 以下の式はa~gまでの変数を全て足した値がそれぞれ該当の列での計算結果と一致していたら、セルを赤くするというものですが、a~gの全て使うのではなく、a~cまでしか使わないという時があります。 ですので、デフォルト値を範囲指定したり、ワイルドカードにすれば、計算結果に支障がでないと考えたのですが、そのようなことはできますか? もしくは他にうまいやり方があったら教えて下さい。 a= 2 b = -2 省略 g = 4 For i = 1 to 最終行 If (Cells(i, "E").Value = a) And (Cells(i, "G").Value = a + b) And (Cells(i, "H").Value = a + b + c) And (Cells(i, "I").Value = a + b + c + d) And 省略 Then Cells(i, "E").Interior.Color = RGB(255, 0, 0) End If Next i

  • VBA 特定のシートが選択されていたら、セル入力

    Excel365。簡略化したVBAです。 現在、「あ」というシートが選択されていたら、「あ」シートの「A1」セルに「a」と入力 「い」というシートが選択されていたら「い」シートの「A1」セルに「i」と入力。 それ以外のシートが選択されていたら、何もしない。 If Sheets("あ").Activate Then Range("A1") = "a" ElseIf Sheets("い").Activate Then Range("A1") = "i" Else 以下省略 「い」シート選択中でも、「あ」シートの「a1」セルに入力され、シートを増やしても、「あ」シートの「a1」セルに入力されます。 「い」シートを入力していません。 簡単だと思っていたのですが…。 どんなコードになるのでしょうか?

  • エクセルで特定のセルへの直接入力だけを禁止したいんです。

    過去の質問を参考に『セルをダブルクリックすると"○"と入力される』というマクロを○⇒●⇒-⇒  ⇒○⇒・・・として使っているんですが、ダブルクリックの度にセルが直接入力の状態(縦の棒の点滅)になってしまい、一度他のセルをクリックしないと次へ進めずに困っています。 良い方法ってあるのでしょうか? ちなみに使用しているマクロは Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const rng As String = "A1:A3" '処理対象のセル範囲 If Not Application.Intersect(Target, Range(rng)) Is Nothing Then If Target.Value = "" Then Target.Value = "○" ElseIf Target.Value = "○" Then Target.Value = "●" ElseIf Target.Value = "●" Then Target.Value = "-" Else Target.ClearContents End If End If End Sub というものです。 よろしくお願いします。

  • 空白セルに●を入れたい

    Excelのセル範囲(例:としてA1からC10)のセルを調べて、 空白のセルになにかの文字(例:●)を打ち込みたい場合のVBAの書き方を教えてください。 Sub セル埋め() Dim r As Range, i As Range Set r = Range("A1:C10") '範囲指定 If Intersect(r, Target) Is Nothing Then For Each i In r If i.Value = "" Then i.Value = "●" Next i End Sub この書き方にこだわっているわけではないので、もっと簡単なやり方でもけっこうです。

このQ&Aのポイント
  • パソコンから実行/本体から実行してもヘッドクリーニングが始まらない。ヘッドも動かず、音もしない。
  • ノズルチェックや印刷は正常に行えるが、チェックパターンがほとんど見えず、ヘッドクリーニングが行われていないようです。
  • 利用環境はEPSONのPX-105で、OSはWindows10です。
回答を見る

専門家に質問してみよう