• ベストアンサー

VBAのRangeについて

先の質問で教えていただいたRangeの事でお教えねがいたいのですが Range("B4") = Textbox1.textの ”B4 "の部分の4(行)が  GYO と言う変数で定義してある場合どのようにすればよいのかわかりません。 質問の説明が下手ですみません。 

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

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.1

4が文字列であれば、"B" & GYO 4が数値であれば、"B" & CStr(GYO) などですかね

saiz
質問者

お礼

お返事遅くなりました。 有難うございました。出来ました。 変数宣言で GYOは長整数型をしました。 CSTrを入れた方も入れない方も出来ました。 

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

その他の回答 (2)

noname#187541
noname#187541
回答No.3

こんばんは。 GYOという変数の中身はなんでしょうか。 B4などとなっているのならそのまま使えます。Range(GYO)のように。 GYOと言う名前から想像するに行番号が入っているLong型の変卯かなと思いますが、そうであれば Range("B" & GYO) で出来ます。

saiz
質問者

お礼

回答有難うございます。 お返事遅れてすみません。 #1の方のお教えで出来てしまいました。 ポイントスミマセン。

全文を見る
すると、全ての回答が全文表示されます。
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

変数を使うときは Rangeプロパティよりも、Cellsプロパティの方が使いやすいかも。。 Cells(Gyo, 2).Value = TextBox1.Value Cells(Gyo, "B").Value = TextBox1.Value Range("B" & Gyo).Value = TextBox1.Value 詳しくは、Range、Cellsプロパティのヘルプを参照のこと。  

saiz
質問者

お礼

お礼遅くなりすみませんでした。 Cellsプロパティの方が使い易いのですね。 覚えておきます。 ちなみに#1の方が最初に教えてくださったのでpointがそちらが優先してしまいますがごめんなさい。

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

関連するQ&A

  • VBAのTextBox表示について質問します。

    実は、MicrosoftのExcel内にありますVBAを使ってシート内に記載られている内容を Userform内にあるTextBoxに表示させたいと考えています。 UserformにあるTextBoxは、シートのセルに対してTextBoxを1個配置させています。 例えば・・・セルA1に入力されている文字をTextBox1に表示 セルB1に入力されている文字をTextBox2に表示 セルC1に入力されている文字をTextBox3に表示 セルD1に入力されている文字をTextBox4に表示 セルE1に入力されている文字をTextBox5に表示と言う様な感じで表示したいです。 セル表示範囲は、A1~E24までのセルでTextBoxもTextBox24まで存在します。 TextBox1.Text = ThisWorkbook.Sheets("Sheet1").Range("A1") TextBox2.Text = ThisWorkbook.Sheets("Sheet1").Range("B1") TextBox3.Text = ThisWorkbook.Sheets("Sheet1").Range("C1") TextBox4.Text = ThisWorkbook.Sheets("Sheet1").Range("D1") TextBox5.Text = ThisWorkbook.Sheets("Sheet1").Range("E1") TextBox6.Text = ThisWorkbook.Sheets("Sheet1").Range("A2") TextBox7.Text = ThisWorkbook.Sheets("Sheet1").Range("B2") TextBox8.Text = ThisWorkbook.Sheets("Sheet1").Range("C2") TextBox9.Text = ThisWorkbook.Sheets("Sheet1").Range("D2") TextBox10.Text = ThisWorkbook.Sheets("Sheet1").Range("E2") 以降~途中省略 TextBox120.Text = ThisWorkbook.Sheets("Sheet1").Range("E24") と言う様な・・・ 上記の、この様なコードでして行くと事は可能なんですが・・・ もっと短く出来ないでしょうか?

  • ExcelのVBAで法人格を取りたい

    エクセルのシート1の1行に1企業の情報があります。 セルを一つ選択し、クリックボタンを押すと、UserForm4がたちあがるコードを入れています。 ------------------------------------ gyo = ActiveCell.Row retu = ActiveCell.Column Cells(gyo, retu).Select UserForm4.TextBox4.Text = Cells(gyo, "w")     '法人名 UserForm4.TextBox5.Text = Replace(Cells(gyo, "r").Value, "-", "") '郵便番号 UserForm4.TextBox6.Text = Cells(gyo, "s")     '企業住所 UserForm4.TextBox7.Text = Replace(Cells(gyo, "aa").Value, "-", "") '電話番号 UserForm4.TextBox8.Text = Replace(Cells(gyo, "z").Value, " ", "") '氏名 UserForm4.TextBox9.Text = Replace(Cells(gyo, "y").Value, " ", "") '氏名カナ   UserForm4.Show End Sub ------------------------------------ UserForm4.TextBox4に法人名を表示し、法人名は「株式会社」や「有限会社」のように法人格がついていますので、 法人格を取りたいと思い下記コードを作ってみました。 ------------------------------------ With Selection Selection.Replase what:="株式会社", Replasement:="" Selection.Replase what:="有限会社", Replasement:="" Selection.Replase what:="合資会社", Replasement:="" Selection.Replase what:="合名会社", Replasement:="" Selection.Replase what:="社団法人", Replasement:="" Selection.Replase what:="財団法人", Replasement:="" End With ------------------------------------ これをどのように上のコードに入れたらいいのでしょうか・・・・ どなたか教えていただけますでしょうか。 宜しくお願い致します。

  • VBAで

    VBAで モジュールAで定義された変数を、モジュールBに引継ぐ事はできますか? モジュールAである値の入っているセルを検索し、その行番号を変数 HitRowNo に入れます。 この変数 HitRowNo をモジュールBでも使いたいんですが、変数(の値?)を引継ぐことは可能ですか? 質問の意味がわかりずらいかもしれませんが、よろしくお願いします。

  • Excel VBAについて

    Excel VBAについて VBA初心者ですが、作業で使うファイルを使いやすくしようと思っているのですが行き詰ってしまいました。 是非、知恵をお貸しいただきたいと質問させていただきました。 フォームを使ってデータを打ち込むようにしようと思っています。 日付の列を選択するとフォームが立ち上がり、必要項目を記入するというものです。 日付欄が未記入なら「新規」、記入済みなら「修正」 という風にしたいのですが、うまくいきません・・・ 修正しようと入力しなおしても新規として新しい行に書かれてしまいます。 色々と自分で勉強して下のような書き方をしましたが、何がいけないのでしょうか。 ご指摘おねがいいたしますm(__)m Public Sub KAKIKOMI(GYO As Long) GYO = ActiveCell.Row Load UserForm1 With UserForm1 If ((GYO = 17) Or (Cells(GYO, 3).Value = "")) Then GYO = 17 .hiduke.Text = "" .bunnrui.Text = "" .tantou.Text = "" .gaku.Text = "" .memo.Text = "" Else .hiduke.Text = Cells(GYO, 3).Value .bunnrui.Text = Cells(GYO, 7).Value .tantou.Text = Cells(GYO, 8).Value .gaku.Text = Cells(GYO, 9).Value .memo.Text = Cells(GYO, 11).Value .ComboBox1.Text = Cells(GYO, 5).Value End If g_swOK = 0 .Show If g_swOK <> 1 Then GoTo TOUROKU_EXIT If GYO = 17 Then GYO = 19 Do While Cells(GYO, 1).Value <> "" GYO = GYO + 1 Loop End If ActiveSheet.Unprotect Cells(GYO, 3).Value = Trim$(.hiduke.Text) Cells(GYO, 7).Value = Trim$(.bunnrui.Text) Cells(GYO, 8).Value = Trim$(.tantou.Text) Cells(GYO, 9).Value = Trim$(.gaku.Text) Cells(GYO, 11).Value = Trim$(.memo.Text) ActiveSheet.Protect End With End Sub ちなみに、17行目が見出しで、3列目が日付欄です。 よろしくお願いします。

  • Textbox1.textについて

    質問のタイトルからして、何の質問という感じで すみません。TextBox1.TextをTextBox10.Textまでつくり cells(1,1)=TextBox1.Text l l cells(1,10)=TextBox10.Text 各セルにTextBoxの内容を書き込みたいのです。セルとテキストの変化 部分をそれぞれ、変数1、変数2とおいてFor~Next なりDo until loop なりで、変数を変化させようと思いました。cells(1,変数1)の指定 は上手くいったのですが、TextBox変数2.Textの指定がうまくいきません。 TextBox変数2.Textについてどのように変数の設定をしたら、良いでしょうか? そもそも、TextBox1.Textの数字部分【1】は変数に指定できないのでしょうか? すみませんが教えてください。EXCEL2000を使っています。

  • VBAのRangeについて

    VBAのRangeについて質問があります。 以下のような表があった場合、VBAにて動的に図を作成したいのですが、Rangeの使い方がよく分かっておりません。 A列   B列  C列    D列  E列・・・ --------------------------------------------     りんご バナナ  すいか ・・・ A店   200円  100円  500円 ・・・ B店   180円  130円  800円 ・・・ C店   220円  150円  650円 ・・・ やりたいことは、 ・A列とB列を選択してグラフを作成 ・A列とC列を選択してグラフを作成 ・A列とD列を選択してグラフを作成   ・・・・・・ というようなグラフを作成したいと考えております。(列は動的です。) 【駄目だった例】 Range(Range(Cells(1, 1), Cells(4, 1)), Range(Cells(1, 3), Cells(4, 3))).Select このように書くと、A列からC列まで全て選択されてしまいます。 (A列とC列だけ選択して、B列は除外したい。) ご存知の方がおりましたら、回答していただけると助かります。

  • EXCEL VBA で範囲名を変数として扱えますか?

    チョット的が外れているかも知れませんが、教えてください。VBAはマクロの記録をちょこっと訂正しながら使える程度です。 ワークシートのA1に商品1、B1に商品2、C1に商品3という範囲名(名前)を定義しました。 次にユーザーフォームにテキストボックス1とテキストボックス2を配置してテキストボックス1に「1」を入れるとテキストボックス2には商品名1の内容が「2」を入力すると商品名2の内容が表示されるようにしたいのです。多分、IF文などで処理する方が合理的だとは思うのですが、 SyouHin = "商品" & me.textbox1.Value me.textbox2.Value = SyouHin みたいに、範囲名を変数にして扱うことはできるのでしょうか?その時にはSyouHinの変数のタイプは文字列(string)とするのでしょうか? 少し、背伸びをして勉強を始めたのですがうまくいきません。 もしかして、全然ピントのはずれている質問かも知れません。また、文章が下手で伝わらないかも知れませんが、よろしくお願いします。

  • Excel VBA 別ブックを開かずに転記

    Excel2007のユーザーフォームについて教えてください。 ユーザーフォームを以下のように作成しました。 ■テキストボックス6つ テキストボックス2→件名 テキストボックス3→数 テキストボックス4→名前 テキストボックス5→備考1 テキストボックス6→備考2 ■コマンドボタンが1と3の2つです。 コマンドボタン1→転記と印刷 コマンドボタン3→終了 ■シートの構成  sheet"作成と一覧"   1行目を以下の項目で使用しています。  A1→番号(テキストボックス1を表示)  B1→件名(テキストボックス2を表示)  C1→数(テキストボックス3を表示)  sheet"印刷"  A1→番号(テキストボックス1を表示)  A2→件名(テキストボックス2を表示)  B2→数(テキストボックス3を表示)  A3→名前(テキストボックス4を表示)  A4→備考1(テキストボックス5を表示)  A5→備考2(テキストボックス6を表示) テキストボックスに入力した値を2つのシートにそれぞれ転記して、 シート"印刷"を2部印刷しています。 ここまで以下のコードで行いました。 Private Sub CommandButton1_Click() '入力値を作成と一覧シートに転記 行 = ActiveCell.Row 列 = ActiveCell.Column Cells(行, 列) = UserForm1.TextBox1.Value Cells(行, 列 + 1) = UserForm1.TextBox2.Value Cells(行, 列 + 2) = UserForm1.TextBox3.Value '入力値を印刷シートにに転記 Worksheets("印刷").Range("A1") = UserForm1.TextBox1.Value Worksheets("印刷").Range("A2") = UserForm1.TextBox2.Value Worksheets("印刷").Range("B2") = UserForm1.TextBox3.Value Worksheets("印刷").Range("A3") = UserForm1.TextBox4.Value Worksheets("印刷").Range("A4") = UserForm1.TextBox5.Value Worksheets("印刷").Range("A5") = UserForm1.TextBox6.Value 部数 = 2 Worksheets("印刷").PrintOut Copies:=部数, Collate:=True UserForm1.TextBox1.SetFocus Cells(行 + 1, 列).Select End Sub Private Sub CommandButton3_Click() '終了ボタンで値をクリアしてウィンドウを閉じる Dim Ctrl As Control For Each Ctrl In Controls If TypeName(Ctrl) = "TextBox" Then _ Ctrl.Value = "" Next Ctrl Unload Me End Sub 教えて頂きたい事なのですが・・・ コマンドボタン1の入力値を作成と一覧シートに転記の所なのですが、 アクティブセルではなく、常にA列の最後の値の次の空白行に転記するようにしたい場合、 どのように書き換えればいいのでしょうか? もう一点ですが、 別ブックにテキストボックス1から6が入力された一覧があります。 この別ブックを開かずに、 テキストボックス1に入力された番号を探して、 テキストボックス2から6に表示されるようにしたいのです。 うまく説明できないのですが・・・ 別ブックの名前は"たちつ" 別ブックは、あいうサーバーの かきくフォルダの中のさしすフォルダです。 ブック"たちつ"に"一覧"というシートがあります。 一覧のシートのD列の3行目以降には番号が入力されており、日々増えています。 テキストボックス1に入力された番号を、 一覧のD列から探し、 I列の値をテキストボックス2へ K列の値をテキストボックス3へ L列の値をテキストボックス4へ M列の値をテキストボックス5へ J列の値をテキストボックス6へ転記させたいのです。 同じブックの別シートを参照するときには Application.VLookupで出来たのですが、 マクロの記録でやってみても、解決できませんでした。 コードをご覧いただいてお分かりの通り、 VBA超初心者です。 ネットを見ながら試行錯誤している状況です。 コードの間違い等あるかもしれませんが、 ご教示よろしくお願いいたします。

  • エクセル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

  • Excel VBAで読み込んだテキストから任意のデータを取得するには?

    Excel VBAで外部テキストをTextBoxに読み込み、そのテキストの中から任意の場所の数値を取得する(変数に代入する)にはどのようにしたらいいのでしょうか? 例えば、外部テキストが以下のようなかんじだったとします。 ここから--------------------- ・・・ 通勤時間A root 60 root 120 root 45 root 225 root 30 通勤時間B root 90 root 150 root 75 ・・・ ここまで--------------------- このテキストの中から通勤時間Aを検索し、その下の行にある、60,120,45,225,30という数値を変数に代入したいのです。 テキストをTextBoxに読み込む方法はわかりますが、数値の検索方法がわかりません。どうすればいいでしょうか? (テキストをTextBoxに読み込まなくても数値を検索する方法があればそちらの方法もお願いします)。