• ベストアンサー

Excelマクロで質問です。変数宣言をしてmyRowで得た数値を使って

Excelマクロで質問です。変数宣言をしてmyRowで得た数値を使って、以下の処理を行うには、どうマクロを組んだら良いのか教えて下さい。(myRowで得た値が120と仮定します) (1)A2からD120の範囲指定 (2)A2からD12(→myRowの1/10、120/10=12。myRow/10は正しい使い方でしょうか?)の範囲指定 (3)もうひとつmyRowを使用する場合、   Dim myRow2 As Long   myRow2 = ....のように使用して良いのでしょうか? 以上、よろしくお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

(1)A2からD120の範囲指定 Range("A2:D" & myRow).Select (2)A2からD12(→myRowの1/10、120/10=12。myRow/10は正しい使い方でしょうか?)の範囲指定 Range("A2:D" & myRow / 10).Select ただし、myRow / 10と計算させた場合、計算結果が整数にならないとエラーになりますので注意が必要です。 Int(myRow / 10)とすれば(取り出した整数が望む結果になるかどうかは分かりませんが)とりあえず整数にはなります。 (3)もうひとつmyRowを使用する場合、 よろしいですが Dim myRow(2) As Long として myRow(1) myRow(2)としたほうが後々なにか使い勝手が良くなると思われます。 myRow(変数)として利用できますから。

7skies
質問者

お礼

ありがとうございます。整数にならなかった場合まで配慮いただき感謝いたします。助かりました。

その他の回答 (1)

  • BookerL
  • ベストアンサー率52% (599/1132)
回答No.2

>(1)A2からD120の範囲指定 Range(Cells(2, 1), Cells(myRow, 4)).Select とか Range("A2:D" & myRow).Select >(2)A2からD12(→myRowの1/10、120/10=12。myRow/10は正しい使い方でしょうか?)の範囲指定 やってみればわかりますよ。 正しくなかったとしても、PCが壊れたりしませんからやってみましょう。 Range(Cells(2, 1), Cells(myRow / 10, 4)).Select >(3)もうひとつmyRowを使用する場合、   Dim myRow2 As Long   myRow2 = ....のように使用して良いのでしょうか? これもやってみればわかることです。 myRow と myRow2 はまったく別物ですので、何の問題もありません。 (ホグペン)

7skies
質問者

お礼

ありがとうございます。一応やってみてうまく行ったのですが、果たして正しい記述なのか不安がありまして。(A2からD120の範囲指定は、試行錯誤しましたがうまく行きませんでした)素早いご回答に感謝いたします。

関連するQ&A

  • Excel にて変数の宣言の仕方

    Excel2002を使用しています。 標準モジュール内で下記のように変数を宣言すると Dim i,k as long (例)kには、あるセルの値を取得します。10000 Keta=len(k) この結果、ketaには、「4」という結果になります。 10000なので、「5」が返らないといけないのですが、うまくいきません。 ところが、 Dim i ,k ,m as long このように変数kの後ろに他の変数(今回はm)を記載すると、 「5」という結果が返ってきます。 変数の宣言の仕方が間違っているのでしょうか? よろしくお願いいたします。 ちなみに、 Dim k as long としても、「4」の結果が返ってきました。 同じ行に他の記載をしないとうまくいかないようです。。。

  • エクセル VBA 変数を一括で宣言したい

    こんにちは。VBAプログラム初心者です。 変数を宣言する際、 dim オーダ番号 as long, オーダ番号2 as long, …オーダ番号100 as long という内容を一括で宣言することは可能でしょうか? イメージ的には下のような感じなのですが。。。 dim i as integer for i = 1 to 100 dim オーダ番号i as long dim 単価i as long next マクロで便利にするつもりが余計面倒になっていて困っております。 解決策を教えていただけましたら幸いです。 何卒よろしくお願いいたします。

  • EXCELマクロの変数の精度

    EXCELマクロの変数の精度について DIM 変数名 as long で精度は16ビットになるようですが、32ビットに精度を上げることができませんか。

  • VBSで変数の宣言はできないのですか?

    VBSで、 Dim a As String a = InputBox("MsgBoxに表示する値を入れてください。", , "test") MsgBox a と文章を作って、test.vbsで保存しました。 するとエラーになります。 Dim a As Stringの部分を消すと、問題なく作動します。 もしくは、 Dim a a = InputBox("MsgBoxに表示する値を入れてください。", , "test") MsgBox a でも正常に動きます。 VBSで変数の宣言はできないのでしょうか?

  • ExcelVBAマクロでの変数の宣言エラーについて

    初歩的な質問になりますが、ExcelVBAマクロで変数の宣言「Dim wdObj As New Word.Application」のエラーについて確認させてください。 変数の宣言「Dim wdObj As New Word.Application」がExcel2007以前では使えないようで、『ユーザ定義型は定義されてません。』というエラーがExcel2007以前で起きます。 Excel2010では問題なく動作しています。 Excel2007以前でも動作する方法をご教授いただけますでしょうか。 お手数おかけしますが、よろしくお願いいたします。

  • エクセル マクロ 写真貼り付け

    エクセル マクロ 写真貼り付け よろしくお願いします。 以前ここで、エクセルに写真を張り付けるマクロのコードが乗っていたので、それを使わせていただいていたのですが、PCを入れ替えてからうまく動作してくれません。どなたか修正個所を教えていただけると助かります。 OS ビスタ  エクセル 2007 "data"シートに貼付する写真のあるフォルダのパス、写真ファイル名が張り付ける分だけ表記されていて、"picture"シートに"data"シートの指定した写真を張り付けていきます。 A4用紙に以前はB3セル辺りから写真を指定の大きさに張り付け、次のページに移動してB37セルB71セルB105セルと写真貼り付けをしてくれましたが、PC入れ替え後から写真が1ページ目のB3セルに重ねて張り付けられてしまいます。 以前のように各ページに1枚ずつ写真を指定の大きさに張り付けるにはどうしたらよいのでしょうか。 以前はOS XP  エクセル2003でした。 マクロに関しては素人です。どうかよろしくお願いします。 Sub MakeThumbnail() Cells.Select Selection.RowHeight = 22.5 Dim myDataCnt As Long Dim myNo As Long Dim i As Long Dim myRow As Long Dim myName As String myDataCnt = Worksheets("data").Range("A1").End(xlDown).Row myNo = 1 myRow = 2 Worksheets("picture").Select Do Until myNo > myDataCnt myName = Worksheets("data").Cells(myNo, 1).Value Cells(myRow, 2).Select ActiveSheet.Pictures.Insert(myName).Select Selection.ShapeRange.LockAspectRatio = msoTrue Selection.ShapeRange.Width = 200# myRow = myRow + 12 myNo = myNo + 1 Loop End Sub

  • VBでの変数宣言は1行に2つできないのですか?

    Visual BASICで変数宣言は1行に2つ以上記述しても実際、動作します。 例 DIM A、B as Integer このように宣言すると、AもBも整数となります。 しかし、このように宣言して、この変数を Call サブプログラム名(B) のように、パラメ-タとして引き渡そうとするとエラーとなってしまうようです。 よくわからないまま、 DIM A as Integer DIM B as Integer と分けて記述したらエラーがきえたようです。 変数宣言は1行に2つ以上まとめて記述してはいけないのでしょうか? VBは Ver 5 です。

  • エクセルでのマクロ

    学校の授業で、エクセルのマクロ(VBA)を習っています。 そこで、質問なんですけど、 Dim ???? As Long Dim ???? As String というように????のところが異なる文字をおいたりして変数を定義するのはわかったのですが、なぜLong とStringと異なるものを使うのでしょうか?同じでも問題はないのでしょうか?教えてください。

  • エクセルマクロ・ユーザーフォームの初期設定

    マクロのユーザーフォームを使って、書式を作っています。 ユーザーフォームを開くと、自動的にシリアルナンバーが出るようにしたいのですが、出てきません。 どのように訂正すれば宜しいでしょうか? ※マクロのテキストを元に、値のみ変更して入力しています。 -----Private Sub UserForm7_Initialize()----- Dim myRow As Long '行番号の変数 Dim mySno As Integer '登録開始番号の変数 Dim myMaxNo As Integer '最大登録件数の変数 With Worksheets("規定") '規定'シートで担当者の入力が始まる行 myRow = 4 '登録開始番号と最大登録件数をセット mySno = 1 myMaxNo = 4 '担当者データを読み込みコンボボックスに登録 Do Until .Cells(myRow, 2).Value = "" omboBox1.Value.AddItem .Cells(myRow, 2).Value myRow = myRow + 1 Loop End With '「精算書」シートの1件目の行番号をセット myRow = 12 '「精算書」データシートの登録No.の新規入力行を求める。 Do Until Cells(myRow, 22).Value = "" myRow = myRow + 1 Loop '登録No.テキストボックスに新規の番号をセット TextBox1.Value = mySno + myRow - 12 ----End Sub------

  • VB6の変数宣言について

    VB6で変数を宣言するときにいちいち新しいプロシージャのたびに新しく宣言しなおすのがすごく不便です。 Dim A As Integer A = 12345 と毎回宣言すると見た目も悪いですしいろいろと不便です。 どのプロシージャにも A と書けば必ず 12345 を呼び出してくれるようにはできないのでしょうか?

専門家に質問してみよう