• ベストアンサー

VBAの構文をお願いします Excelです

宜しくお願いいたします。 Rigth関数をVBAで行うときの構文教えてください。 Sheet1のA1セルに123456があります、Sheet2のA1セルに右から2つすなわち56をコピーするにはどのように構文すればよいのですか。Lefe、Midもこれが分かればできると思います。

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

  • ベストアンサー
  • eden3616
  • ベストアンサー率65% (267/405)
回答No.1

VBAの文字列操作でもエクセル関数で書く場合と同じ引数を使用します。 VBAコードにサンプルのコードを提示しています。 A2、A3セルにMid、Leftの結果も書出しています。 tarやws変数に対象のセルA1や、出力先のシートSheet2を格納して利用していますが Worksheets("Sheet2").Range("A1").Value = Right(Worksheets("Sheet1").Range("A1").Value, 2) 上記と同じ意味になります。 結果を画像添付いたします。 (B列にはエクセル関数を使用した結果を載せています) ■VBAコード Sub sample() Dim tar As Range Dim ws As Worksheet 'オブジェクトをセット Set tar = Worksheets("Sheet1").Range("A1") Set ws = Worksheets("Sheet2") 'Right(右から2文字) ws.Range("A1").Value = Right(tar.Value, 2) 'Mid(左より3文字から2文字) ws.Range("A2").Value = Mid(tar.Value, 3, 2) 'Left(左から2文字) ws.Range("A3").Value = Left(tar.Value, 2) End Sub

関連するQ&A

  • VBAの構文を教えて下さい。

    沢山あるデータの中から、たとえば「A」を検索し、「A」があれば、そのセルに、青などの色を塗るというようなVBAは作れますか? つくれたら、構文を教えて下さい。

  • Excel2000VBAでのセル参照について

    Excel2000のVBA自動記録である構文をつくりました。 その中で、セルやレンジを特定しているのですが (A1)や(A1:B10)とか.. その後シートの行や列を追加あるいは削除した時に、この部分を自動的に対象のセルやレンジに書き換わる方法というのはあるのでしょうか? (関数式なんかは、自動で参照するよう書き換わるのですが、そのようなイメージです) 初心者です。何卒よろしくお願いします。

  • EXCEL VBA構文について

    EXCEL初心者です、退職された人が作成した関数を利用しているのですが、関数をデリートを押し消してしまう人がいて困っています。これは記号で入力したシフト表から1日~月末の日当たりの仕事別担当は誰かを検索して表を作成しているものです。この関数をVBAで作成したいのですが挑戦しているのですが出来ず困っています、置き換えの構文又はヒントを教えていただきたく宜しくお願いいたします。合わせて記号の意味をお願いいたします。 =IF(ISERROR(INDEX(Sheet3!$A:$A,MATCH($B6&"/"&COUNTIF($B$6:$B6,$B6),Sheet3!B:B,0))),"",INDEX(Sheet3!$A:$A,MATCH($B6&"/"&COUNTIF($B$6:$B6,$B6),Sheet3!B:B,0))) 今使用している関数です、sheet3にはA列に10人程度の名前、横の列には1日から月末まで7つ程度の記号が入っています。置き換えSheetにはB列に記号、横列に1日から月末ですここに名前が入るようにしたい。 お願いは 1.この関数からVBAの構文にするにはどうすればよいか 2.&"/"&の意味、Sheet3!B:B,0の最後の0の意味、,"",の意味を教えてください 作文が下手ですいません、無理なお願いですいません。

  • VBAの構文で教えてください

    VBAの繰り返し処理 Do Until ~について教えてください。 シートの行列を全て書いてしまうと長くなるので 少し省略させていただきます。    A  B  C  D 1 2008 1 ○ 2008 2 2008 2 × 2008 このような羅列がデータ検索の際に何行になるかわからない状態のデータがあります。 C 列はBが1の場合○、2の場合は× D 列はAが数字があればそのままコピーするようにくみました。 ここで教えていただきたいのが、現在私はCとDの構文は AまたはBに数字があればC,Dに反映するという構文ではなく C、Dの列の最後まで全て数式を入力する構文にしています。 なので、A,Bに入力があってもなくても数式が飛ぶような構文になっています。 そこで、DO Until ~ を使用し A列が空白になるまで処理を繰り返すとすればいいのかなとおもうのですが、 Dim n as integer n=1 Do Until Sheets("sheet1").Cells(n, 1) = "" 空白までという構文(正しいかはわかりませんが)で行き詰っています。 これ以降のAが空白ならDに貼り付ける、 B列も同様に空白まで検索し○または×に置き換えるとは どのうように組み立てたらいいのでしょうか? また、申し訳ないのですが Cが×ならその列の背景を色づける(今回の場合なら2の列) とことまでしてみたいのですが・・・ このようなことが可能であれば教えていただければと思います。 VBAははじめたばかりで不勉強な点も多々ありますがよろしくお願いします。

  • VBAの構文をご指導お願いいたします

    EXCELでシフト表を作成していますが次の操作をVBAで処理したいと考えていますが初心者で難しく教えて頂きたく宜しくお願いいたします。 1.sheet1でB1~AF1に日付、A2~A15に名前、日ごとに担当者を決め役割を記号(1)、(2)、(1)、(2)、等の記号をセルに入れてAさんは1日には(1)2日は(2)とこんな感じでシフト表を作成しています 2.Sheet2のB1~AF1に日付、A2に(1)、A3に(1)、A4に(2)~と記号を入れ、シフト表の逆で例えば1日の(1)は誰が担当者かを分かるようにSheet1のシフト表からSheet2のセルに担当者を代入する表を作りたいのです(ここの構文を教えて頂きたい)。Range("A1").Valueでお願いしますRC形式だと分からないのです勝手で説明が下手ですいません、何卒宜しくお願いたします。

  • Excel-VBA rangeプロパティの使い方について

    Excel-VBA rangeプロパティの使い方について VBA初心者です。いろいろ調べたのですが、分からないので教えてください。 ThisWorkbookのSheet1のA1セルに、aというファイルのaというシートの特定のセルの値をコピーしたいです。 コピーする値のセルは、ThisWorkbookで入力した値を基に変数で記述したいです。 例えば、ThisWorkbookのSheet1のC2セルに「D1」と記載していたとして、その値を変数として設定して、最終的にaというファイルのaというシートの「D1」セルをThisWorkbookのA1セルに貼り付けるのが目的です。 この場合の、下記のhensuu = の設定方法について、ご教授願います。 hensuu = ThisWorkbook.Sheets("Sheet1").Range(“A1”)= Workbooks(a).Sheets(a).Range(hensuu)

  • Excel2003、VBAにて。

    Excel2003、VBAにて。 シートを自動で追加し、追加したシートのA1セルに全シート数を設定する方法が分かりません。 どなたか教えてください。

  • エクセルVBAの構文を教えてください。

    こんばんは。マクロ初心者です。 VBAの構文を教えてください。 ■シート(1)には項目が50ある5年分(60ヶ月)の市場統計データーがあります。50個ある項目名はB列にありDセル2008年1月からBKセル2012年12月まで横に60ヶ月分のデーターを入力しています。 ■シート(2)には50の項目名のデータがあります。項目名はB列にあります。 ■シート(3)にはコンボボックスを作成し、コンボボックスの下に表を作成しました。 シート(3)のコンボボックスの50ある項目から▼ボタンで項目を選びコマンドボタンを押すと シート(3)の下記のセル範囲でシート(1)のデーターを参照させたいのです。 B8セルからM8セルまで(2008年度12か月分のデータ) B11セルからM11セルまで(2009年度12か月分のデータ) B14セルからM14セルまで(2010年度12か月分のデータ) B17セルからM17セルまで(2011年度12か月分のデータ) B20セルからM20セルまで(2012年度12か月分のデータ) コンボボックスは設定できたのですが、構文がうまくできないため参照できていません。 エクセルVBAに詳しい方、どうぞご教授ください。よろしくお願い致します。

  • 数字の下数桁を削除するVBAを教えてください

    EXCELでの構文を宜しくお願いいたします。 sheet1のA1~A10に6:30~13:00(6.5H)とか13:00~20:00(7.0H)がランダムに入力されています。このデータをsheet2のB1~B10に(6.5H)(7.0H)を削除して(右6桁を削除になるのでしょうか)コピーをするVBAでの構文を宜しくお願いいたします。

  • EXCEL・VBAに関して

    或るブックで定義した「ユーザ定義関数」を,VBAでシートを別のブックにコピーするのと同時にそのブックにコピーすることは可能でしょうか? 後、一連のブックをグループ分けのようなことをして、そのグループ内では共通して使えるようには出来ますか。そうすればコピーする必要は無いように思うのですが。

専門家に質問してみよう