エクセル VBAでの質問です。
自分以外のファイルの値7を参照するエクセルを作っています。
sheet1のA1~B4に入力欄があり、
そこにフォルダ名、ファイル名、レンジを入力し、sheet1に表示しようと思っています。
しかし、A1~B4までの範囲を設定してしまうと、入力欄が上書きされてしまいます。
それを回避するためにオフセットさせようと思い、
自分で色々やってみたのですが、うまくいかないので教えてください。
要望としては、Sheet1B4にA1:F10と入力されてた場合、
Sheet1のC5からその範囲を表示させたいです。
以下が詳細です。
ーーーーー
Sheet1
(B1)フォルダ名入力欄 例 C:\test\test2
(B2)空白 「コマンドボタン1」あり
(B3)20110101.xls
(B4)B5:D8
--------
’コード
Private Sub Commandbutton1_Click()
Dim hani As Variant
hani = Range("B4").Value
Range(hani) = "='" & Range("B1").Value & "\[" & Range("B3").value & "]Sheet1'!" & Range("B4").Value’↑改行なしです。
End Sub
--------
です。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
参照式を入れる基点(左上セル)はC5セル固定でいいんですね。
基本形は
RANGE("C5:E8").Formula = "=パス[ブック名.xls]シート名!B5"
のようにします。
左側が「目的の範囲の縦横寸法に合致した,C5を基点とするセル範囲」であり,逆に右側は「目的(参照元)の範囲の左上のセル1個を相対参照で参照する式」にするという原則を憶えてください。
あとは実地に合わせてのバリエーションです。
dim hani as string
dim s as string
hani = range("B4").value
s = split(hani,":")(0)
range("C5").resize(range(hani).rows.count, range(hani).columns.count).formula _
= "='" & range("B1") & "\[" & range("B3") & "]Sheet1'!" & s
No.2
- 回答日時:
アイデアとしては面白いけれども、マクロらしくないマクロです。
例えば、以下のようになります。
Private Sub Commandbutton1_Click()
Dim hani As Variant
Dim rng As Range
Dim m As Long, n As Long
Dim i As Long, j As Long
hani = Range("B4").Value
Set rng = Range(hani)
m = rng.Rows.Count: n = rng.Columns.Count
For i = 1 To m
For j = 1 To n
Range("C5").Cells(i, j).Formula = "='" & Range("B1").Value & "\[" & Range("B3").Value & "]Sheet1'!" & Range(hani).Cells(i, j).Address(1, 1)
Next j
Next i
End Sub
しかし、私なら、エラー処理を行うようにして、このように書くかもしれません。
ただ、ファイルを開かないで値を取るというのは、イレギュラーなマクロであることには違いありません。ブックをオーブンして、値を取るのが基本です。
No.1
- 回答日時:
シートの指定はどうなったのかな。
指定しないのかな。下記ではSheet1に仮定。
ーー
下記は質問者のやり方と違ったやり方である。
どちらが普通のやり方かよく判らない。こちらも慣れない者には難しいと思う。
しかし、よく初心者が、ブックをオープンしないでとか勝手なことを質問するのがあるが、そういうのに対しては、下記は応えてない。
ーー
C:\Documents and Settings\XXXX\My Documents
(コマンドボタン貼り付け位置)
01BBB.xls コピー元ブック名
A1:B5 コピー元セル範囲
ーーー
コード
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim wb1 As Workbook
Dim wb2 As Workbook
Dim rng As String
Set wb2 = ActiveWorkbook
rng = wb2.Worksheets("Sheet1").Range("b4")
Set wb1 = Workbooks.Open(Range("b1") & "\" & Range("b3"))
wb1.Worksheets("sheet1").Range(rng).Copy wb2.Worksheets("Sheet1").Range("A20")
wb2.Worksheets("Sheet1").Activate
Application.ScreenUpdating = True
End Sub
ーー
コピー元のブックのSheet1のrange(”A1;B5”)をコピーして、今開いている(このコードを入れている)ブックの
Sheet1のA25セルから貼り付けている。
このA25を右上隅のセルとして、任意に指定すれば、好みの位置に貼り付けられる。
初心者な質問ですみませんでしたσ(^_^;)
最終的な表示結果はもんだいありませんでした
回答ありがとうございます!
勉強させてもらいます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで全部の数字を3倍したい
-
スピンボタンのコピー
-
エクセル VBA オフセットさせ...
-
エクセルVBA: 別のセルからの...
-
エクセル 同一セル内の特定文...
-
【エクセル2016】行数を指定し...
-
こんな方法を探しています。
-
エクセルでの先頭文字について
-
EXCEL2002で、「セルの範囲指定...
-
countif関数で離れた場所を検索...
-
HYPERLINKのリンク先のセル範囲...
-
Excelで数値→文字列変換で指数...
-
テキストボックス内の文字のふ...
-
Excelで行ごとコピー、同じ行を...
-
エクセル
-
エクセルでグラフタイトルが折...
-
エクセルにおける、グラフの指...
-
Excelの関数について、特定の文...
-
PDFの一部を切り取って別のシー...
-
日付が1年以内になると他のセル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スピンボタンのコピー
-
エクセルの数式で教えてください。
-
エクセルVBAを使いセルを指...
-
HYPERLINKのリンク先のセル範囲...
-
エクセルVBA: 別のセルからの...
-
エクセルでの先頭文字について
-
エクセル VBA 特定の範囲内に一...
-
データベース関数のCriteria(...
-
セルに入力したファイル名を参...
-
エクセルで全部の数字を3倍したい
-
ワードからエクセルへのハイパ...
-
VBAからIEを操作する時のウィ...
-
【頭の良い人へ】同セル内の文...
-
エクセルで最後に入力したセル...
-
countif関数で離れた場所を検索...
-
エクセルで作成したデータシー...
-
EXCEL2002で、「セルの範囲指定...
-
Excelのマクロを使わず、数式内...
-
Excelで指定した範囲内に値を一...
-
条件付き書式
おすすめ情報