アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2000
Win2000です。

あるbook「A.xls」にある表「a」を「B.xls」にコピペ&行列反転するマクロを作っています。

A.xlsの表「a」のサイズが作成の都度変わるため、
B.xlsからサイズの取得をする為、


Workbooks.Open Filename:="A.XLS"

I1 = 1 ' 行数の取得
DO WHILE CELLS(I1,1).VALUE <> ""
 I1 = I1 + 1
LOOP

I2 = 1 '列数の取得
DO WHILE CELLS(1,I2).VALUE <> ""
 I2 = I2 + 1
LOOP

として、行と列の数を取得しています。

で、ここまで来てセルの範囲をどうやって指定していいのか分からなくなりました。

例えば、I2の値をExcelの列のアルファベット表記に変える等、
なにかいい方法はありませんか??

A 回答 (3件)

う~ん。



列のアルファベットですか…。A~Zなのでchr関数で、数値を文字に変換すれば出来そうですね。

例えば、I2の値が1だったら(Aの値は65)CHR(64+I2)とすれば、”A”の文字が取得できます。
I2の値が26を超える場合は、数値を26で割って上位一桁と下位一桁で別々に文字を作る用にすれば、できるでしょう。

でも、range関数でこういう指定が出来ますが、こっちの方が簡単ですよ。

range(cells(1,1),cells(I1,I2)).・・・

で記述できますよ。
    • good
    • 0
この回答へのお礼

早速の返事ありがとうございます。

え゛っ!!
RangeってCellsが使えるんですか・・・
てっきりRange("A1:Z1")って言う使い方しかできないと
思っていました・・・

もう一度ヘルプをよく読んでみます。

どうも、ありがとうございました。

お礼日時:2003/12/23 11:10

Sub hanten()


For m = 1 To 100
For n = 1 To 100
Sheet2.Cells(n, m) = Sheet1.Cells(m, n)
Next n
Next m
Sheet2.Activate
Cells.Select
Selection.Copy
Dim bookb As Excel.Application
Set bookb = New Excel.Application
bookb.Workbooks.Open ("c:\B.xls")
bookb.Visible = True
bookb.ActiveSheet.Paste
End Sub

見当違いかもしれないですが、・・・
範囲ぐらいは自分で考えてください。
もう少し手間かかります、それから
人それぞれですし。
    • good
    • 0
この回答へのお礼

ありがとうございます。

これだと、表のサイズが100x100で決まってしまいます。
又、シート全体のコピぺになってしまいますし、行列の反転をしている為、反転後の列の数が足らなくなってしまいます。

ただ、行が256迄しか使えない事に気が付きました。

お礼日時:2003/12/23 11:22

下記が参考になれば。


(1)列指定
(2)行指定
(3)最下行、最右列がわかっているときのA1セルからの範囲指定
Sub test04()
i1 = 3: i2 = 4
Rows(1).Select
Columns(2).Select
Range(Cells(1, 1), Cells(i1, i2)).Select
End Sub
    • good
    • 0
この回答へのお礼

早速の返事ありがとうございます。

え゛っ!!
RangeってCellsが使えるんですか・・・
てっきりRange("A1:Z1")って言う使い方しかできないと
思っていました・・・

もう一度ヘルプをよく読んでみます。

どうも、ありがとうございました。

お礼日時:2003/12/23 11:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!