現在開いているブックの任意のセルから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を見た人はこんなQ&Aも見ています
-
準・究極の選択
「年収1000万円で一生カレーライス」か 「年収180万円で毎日何でも食べ放題」 あなたはどちらを選びますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エラーになってないのにVBAが中断される
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
Excelで空白セル直前のセルデー...
-
エクセルVBA 配列からセルに「...
-
【VBA】【ユーザーフォーム_Lis...
-
DataGridViewでグリッド内に線...
-
Excel VBAでCheckboxの名前を変...
-
【VBA】写真の貼り付けコードが...
-
【ExcelVBA】値を変更しながら...
-
Excel 範囲指定スクショについ...
-
Excel UserForm の表示位置
-
エクセルのカーソルを非表示に...
-
Excel VBA IF文がうまく動作し...
-
特定の色のついたセルを削除
-
VBA にて、条件付き書式で背景...
-
VBAでユーザーフォームにセル値...
-
「Spread」のセルを移動させる...
-
VBA:日付を配列に入れ別セルに...
-
【Excel VBA】マクロで書き込ん...
-
Excel VBAで特定の範囲の空白セ...
-
ユーザフォームを使ってのデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAマクロ実行時エラーの修正に...
-
エクセルVBA 配列からセルに「...
-
特定の色のついたセルを削除
-
Excel UserForm の表示位置
-
Excelで空白セル直前のセルデー...
-
【VBA】【ユーザーフォーム_Lis...
-
VBA:日付を配列に入れ別セルに...
-
【Excel VBA】一番右端セルまで...
-
Excel VBAでCheckboxの名前を変...
-
EXCEL VBA 文中の書式ごと複写...
-
入力規則のリスト選択
-
DataGridViewのフォーカス遷移...
-
【VBA】写真の貼り付けコードが...
-
CellEnterイベント仕様について
-
下記のマクロの説明(意味)を...
-
飛び地セルの空白判定
-
Excel 範囲指定スクショについ...
-
C# DataGridViewで複数選択した...
-
Excel VBA IF文がうまく動作し...
-
エクセルのカーソルを非表示に...
おすすめ情報