三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

Excel VBAで見慣れないコード Range("Sheet2!A1:D5")を見てビックリした話

Rangeにシート!範囲を渡す

1.Set r1 = Range("Sheet2!A1:D5")を初見で見て、ビックリした

00:00 派遣先で見たコードにビックリ

Set r1 = Range("Sheet2!A1:D5")

↑これ、できるの?シート名書いてるけど、いけるのか?

ってことで、
門外不出の秘密コードを頭の隅に覚えておき、
持ち帰ってテスト

https://youtu.be/N6YfNHfTknY

02:03 2.シート名がわかっていて、書くんだから

Set r1 = Sheets("Sheet2").Range("A1:D5")

Set r1 = Range("Sheet2!A1:D5")
と書けても、
シート Sheet2 を指定してるんだから、
そんなに驚くことじゃないし、
まとめて書かれてもなぁ・・・

=Sum(Sheet2!A1:D5)
みたいに
ワークシート関数で書いているので、
違和感は無いけど。

03:43 3.調子に乗って、ブック名を含めてみた。

ブック名を範囲に含めてみた

使わないんだけどね・・・

'=SUM([Book1TEST.xlsx]Sheet1!$C$2:$C$4)
'ブック名を含めて、隣のブック.シート.範囲って可能なの?
Sub test003さらにブック名を含めてみた()

    Dim r1 As Range, r2 As Range

    'ブックを含めた範囲をセット
    Set r1 = Range("[Book1TEST.xlsx]Sheet1!$B$2:$C$4")
    '↑ブックが開いてないとエラーになるけどね。

    For Each r2 In r1
        Debug.Print r2.Address & " = " & r2.Value
    Next

End Sub

06:12 4.終わりのあいさつ

派遣先で見た、少しびっくりしたコードを紹介してみました。
使わなくても、こんなのあったんだぁ・・・程度に

#ExcelVBA #Range
#デバッグ #シート名 #ブック名
#Debug #SheetName #BookName

youtu.be
https://youtu.be/N6YfNHfTknY
目次とソースコード
00:00 派遣先で見たコードにビックリ
02:03 2.シート名がわかっていて、書くんだから
03:43 3.調子に乗って、ブック名を含めてみた。
06:12 4.終わりのあいさつ

Option Explicit

Sub test001今までの書き方()

    Dim r1 As Range, r2 As Range

    Set r1 = Sheets("Sheet2").Range("A1:D5")
    
    r1.Clear
    r1 = "今までの書き方でテスト"
    r1.Cells(3, 2) = "3行,2列の位置"
    r1.Cells(3, 2).Interior.Color = RGB(255, 0, 0)
    
End Sub

Sub test002初見で少しビックリな書き方()

    Dim r1 As Range, r2 As Range

    Set r1 = Range("Sheet2!A1:D5") 'ん?シート名!範囲の文字列で指定
    
    r1.Clear
    r1 = "Sheet2!A1:D5をテスト"
    r1.Cells(2, 3) = "2行,3列の位置"
    r1.Cells(2, 3).Interior.Color = RGB(0, 255, 0)
    
End Sub

'=SUM([Book1TEST.xlsx]Sheet1!$C$2:$C$4)
'ブック名を含めて、隣のブック.シート.範囲って可能なの?
Sub test003さらにブック名を含めてみた()

    Dim r1 As Range, r2 As Range

    'ブックを含めた範囲をセット
    Set r1 = Range("[Book1TEST.xlsx]Sheet1!$B$2:$C$4")
    '↑ブックが開いてないとエラーになるけどね。

    For Each r2 In r1
        Debug.Print r2.Address & " = " & r2.Value
    Next

End Sub

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)