現在開いているブックの任意のセルからoffsetされたセルの値を変数に代入したいのですがうまくいきません。
現在開いているブックをbook1とし、book2に変数goに入る値によって変更したいシート(sheet1,
sheet2)二枚のサンプルシートを準備。
仮にbook1のS19(変数goに入る値)が1の場合、book2のsheet1(go=2であればsheet2
を)コピーしコピーした該当セルに各変数に入っている値を転記するマクロを作りたいと思っています。
本来であれば変数が多くなったりとあまり良くない方法でしょうから配列等を使った方が良いのかもしれませんが、そこまで自分の技術がないこと・変数の値によってbook2への処理が変わることから多くの変数を作っています。
下記コードは一部抜粋ではありますが躓いている部分のコードになります。
変数coのところで止まってしまうのですがcoをdo以下のようにrangeでセル位置を固定した場合はうまくいきました。
ただ業務上セルの位置が都度変更となるため、book1の任意のセルを選びそのセルからoffsetされたセルの値を変数に代入しようと以下(coの部分のみ)書き換えたところうまくいかなく(コンパイルエラー:メソッドまたはデータメンバーが見つかりません)なりました。
Set wb1 = ThisWorkbook
Set sh1 = ActiveSheet
'選択した荷主セルを基準に各変数へ各値を代入
With sh1
co = .ActiveCell.Offset(2, -17).Value
do = .Range("D19").Value
no = .Range("E18").Value & Range("E19").Value & Range("F19").Value
tel = .Range("D18").Value
ld = .Range("U4").Value
dd = .Range("Z18").Value
go = .Range("S19").Value
End With
初心者ですので「セルの指定を基準セルからのoffsetで指定すればいいんだ!」と考えてしまったのですが違ったようで…。
お手数ではありますがコード意味等を付けて頂くと非常に助かります。
ご指導よろしくおねがいします!
No.4ベストアンサー
- 回答日時:
No3です。
>ご指導頂いた通りに変更してみたのですがダメでした。
・・・????
おかしいと思って、こちらでもちゃんと試してみました。
ご提示の
>.ActiveCell.Offset(2, -17).Value
ではエラーになりますが、No2、No3の
co = ActiveCell.Offset(2, -17).Value
co = .Range(ActiveCell.Address).Offset(2, -17).Value
であれば、どちらも動作します。
(No3はまわりくどいので、No2の方が良いでしょう)
No3にも書いておきましたけれど、Offsetの結果が無効なアドレスになっていませんか?
ActiveCellがR列よりも大きな列番号になければ、当然の結果としてエラーになります。
例えば、coに値を代入する前に
If ActiveCell.Column < 18 Then MsgBox "列番号が小さすぎ"
の一行を入れておけば、簡単なチェックになりますけれど、これに引っかかっていたりするのでは??
(もしそうなら、そもそものテスト方法がおかしいとも言えますが…)
fujillinさんありがとうございました。
再度offsetさせる数を数えなおしたところ、ご指摘にあった通り列番号の数え間違いでした。
初歩的なミスでお時間を取らせてしまいすみません。
また私の初歩的質問にも温かくご対応頂きありがとうございました。
ここに質問に来る方は私を含めみなさんわからないから質問に来るのであって、fijillinさんのように温かく投げださず教えてくれる方が居ることは非常に有難く心強く感じます。
今後も質問をさせて頂く事と思いますが、見かけたときはまたご教授頂ければ幸いです。
今後ともよろしくお願いします。
ありがとうございました。
No.3
- 回答日時:
No2です。
>残念ながらドットを外してみたものの変化はありませんでした
あらら…失礼いたしました。
ActiveCellってRangeとは違うのですかねぇ・・
今、環境がないので確認はできないのですが、それなら、Rangeに置き換えてしまえばうまく行くのではないでしょうか。(多分)
.Range(ActiveCell.Address).Offset(2, -17).Value
ではいかがでしょうか?
Offset先のセルが存在する(シート外になっていない)ことが条件ですけれど。
お時間を取らせてすみません。
ご指導頂いた通りに変更してみたのですがダメでした。
現在書いているコード(.range(activecell .address)へ変更しています)は以下のようなものです。
実績を入力するブックから連絡表に必要なデータを取り出しプリントアウトするのが目的となります。
Dim wb1 As Workbook, wb2 As Workbook '実績を入れる変数
Dim sh1 As Worksheet, sh2 As Worksheet '連絡表のシート操作時のシートを入れる変数
Dim co As String '会社名を入れる変数
Dim do As String '作業名を入れる変数
Dim no As String '作業Noを入れる変数
Dim tel As String '携帯Noを入れる変数
Dim ld As Date '入荷日を入れる変数
Dim dd As Date '納品日を入れる変数
Dim go As String '納品先を入れる変数
Set wb1 = ThisWorkbook
Set sh1 = ActiveSheet
'選択した荷主セルを基準に各変数へ各値を代入
With sh1
co = .Range(ActiveCell.Address).Offset(2, -17).Value
do = .Range("D19").Value
no = .Range("E18").Value & Range("E19").Value & Range("F19").Value
tel = .Range("D18").Value
ld = .Range("U4").Value
dd = .Range("Z18").Value
go = .Range("S19").Value
End With
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excel VBA IF文がうまく動作し...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
エクセル、マクロで番号を読込...
-
[.Net] DataGridのセルをマージ...
-
特定の色のついたセルを削除
-
Excel 範囲指定スクショについ...
-
C# DataGridViewで複数選択した...
-
下記のマクロの説明(意味)を...
-
VBA deleteをクリックすると型...
-
VBA:日付を配列に入れ別セルに...
-
CellEnterイベント仕様について
-
Excel UserForm の表示位置
-
openpyxlでExcelセルをクリック...
-
Excel VBAでCheckboxの名前を変...
-
複数指定セルの可視セルのみを...
-
セルA1からA10の値を表示ができ...
-
EXCEL VBA 文中の書式ごと複写...
-
コンボボックス or リストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【Excel VBA】一番右端セルまで...
-
【VBA】【ユーザーフォーム_Lis...
-
Excel 範囲指定スクショについ...
-
Excel VBAでCheckboxの名前を変...
-
特定の色のついたセルを削除
-
【ExcelVBA】値を変更しながら...
-
エクセルのカーソルを非表示に...
-
VBA:日付を配列に入れ別セルに...
-
EXCEL VBA 文中の書式ごと複写...
-
入力規則のリスト選択
-
DataGridViewでグリッド内に線...
-
Excel VBA IF文がうまく動作し...
-
関数の引数でrangeを指定したとき
-
C# DataGridViewで複数選択した...
-
Excel VBAで特定の範囲の空白セ...
-
下記のマクロの説明(意味)を...
おすすめ情報