[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ubound 引数dimensionについて』(ばうんど)
エクセルVBA初心者です。学習テキストを進めていくうちに次の問題で少し疑問が残りました。
option base 1
sub rangetovariant
dim mydata as variant
dim r as integer,c as integer
worksheets("Sheet1").activate
mydata = range("a1").currentregion.value
r = ubound(mydata,1)
c = ubound(mydata,2)
worksheets("Sheet2").activate
range(cells(1,1),cells(r,c)).value =mydata
end sub
uboundの引数dimensionの説明を見ると次元を指定するとあります。
このコードで記述されている
r = ubound(mydata,1)
c = ubound(mydata,2)
の変数rには行の最大値、変数cには列の最大値が格納されるようですが、
引数dimensionは常に1は行、2は列というような認識で正しいのでしょうか?
< 使用 Excel:unknown、使用 OS:unknown >
ubound 関数で第二引数を省略した場合の規定値は 1。
ubound(mydata), ubound(mydata,1) は同じ値になる。(私は多次元配列では省略しませんが)
>引数dimensionは常に1は行、2は列というような認識で正しいのでしょうか?
二次元配列ではそのような理解でいいでしょう。 (seiya) 2018/06/21(木) 11:53
モジュールレベルで「Option Base 1」としてますが、このコードに限って言えば意味あるんでしょうか?
結局のところ
Dim Mydata As Variant Mydata = Range("a1").CurrentRegion.Value
としているので、わざわざ「Option Base 1」を書かなくても1から始まっちゃう気がするんですが、何か他にメリットあるんでしょうか?
ちなみに、その参考にされた本は学習のために一度配列に格納してから別シートに出力させているんでしょうけど、こんな感じでやれば配列に格納せずダイレクトに参照させることもできそうですね。
Sub Sample() With Worksheets("Sheet1").Range("A1").CurrentRegion Worksheets("Sheet2").Cells(1, 1).Resize(.Rows.Count, .Columns.Count).Value = .Value End With End Sub
(もこな2) 2018/06/21(木) 13:15
じゃあどうするの?って話ですが、行数、列数が明確な時はこうやって書くと間違いが起こりにくいです。
cells(1,1).resize(r,c).value = mydata
P.S. ExcelVBAにおいては1次元目が行、二次元目が列としないと、Rangeとの入出力が一発で出来ないので暗黙の了解でそうなりますが、自作の配列変数なら自由に定義出来てしまいます。
>としているので、わざわざ「Option Base 1」を書かなくても1から始まっちゃう気がするんですが、何か他にメリットあるんでしょうか?
きっとDim data(10,10)としたときに、Option Base 1が未指定だとdata(0〜10,0,10)になってしまうのでその対策じゃないかとエスパーしてみます。
身勝手な回答でお邪魔しました。
(名無し) 2018/06/21(木) 13:53
Sub Sample2() Dim MyData As Variant Dim x As Long, y As Long
With Worksheets("Sheet1").Range("A1").CurrentRegion ReDim MyData(1 To .Rows.Count, 1 To .Columns.Count)
For x = 1 To ubound(mydata,1) For y = 1 To ubound(mydata,2) MyData(x, y) = .Cells(x, y).Value Next y Next x End With
'For〜Nextステートメントを実行した際に1ステップ分、余分に増加している分を引く Worksheets("Sheet2").Cells(1, 1).Resize(x - 1, y - 1).Value = MyData
End Sub (もこな2) 2018/06/21(木) 23:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.