またまたVBAで質問があります。
分かる方、ご教授願います。
あるフォーマットの見積依頼書を、指定されたフォーマットに変換するマクロを組んでいます。
マクロ実行excelファイルに、処理された見積依頼ファイルから以下のデータを取得します。
・伝票番号(A列) *A4に手でセット
・会社名
・郵便番号
・住所
・電話番号
・見積合計(F列) *F4に手でセット
activeSheet.Cells.SpecialCells(xlLastCell).Rowを使用し、アクティブシート(上記6つのデータが格納されるシートに設定済み)の最終行番号を取得しようとしているのですが、どうもうまく取得できていないみたいです。
以下質問。
・初期動作時には、行番号4が取得されると思うんですが、違いますかね?(実際取られる値は5)
・仮に初期動作時に5が取られるなら、2回目には、6が取られますよね?(実際取られる値は5)
何回実行しても、最終行番号5を取得しているみたいです。(保存は処理完了時に毎回上書き保存済み)
ソースを張付けますので、どなたかご教授お願いします。
' 見積書一覧シートをアクティブシートに設定
Set activeSheet = quotationList.Worksheets("見積書一覧")
activeSheet.Activate
' 見積書一覧の最終行取得
fileLastRow = activeSheet.Cells.SpecialCells(xlLastCell).Row
' 見積書一覧に取得した値をセット
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 1).Value = sendSlipNo
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 2).Value = sendCompany
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 3).Value = sendPostNo
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 4).Value = sendAddress
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 5).Value = sendTelNo
quotationList.Worksheets("見積書一覧").Cells(fileLastRow, 6).Value = quotationSum
quotationList.Save
補足
・quotationListには、マクロ実行excelファイルがworkbookとして格納されています。
・send~って変数には、予めコピーした値(別シートから)が格納されています。
No.1ベストアンサー
- 回答日時:
ActiveSheetを変数宣言してますよね?
読み取り専用オブジェクトのActiveSheetを、
わざわざオブジェクト変数にしてるところに問題がありそうな。
それから、提示のコードの部分のみついて言えば、
見積書一覧シートをActiveにする必要はないように思えますが
ま、それは置いといて、以下のようにしてみたらどうなるでしょうか。
>Set activeSheet = quotationList.Worksheets("見積書一覧")
>activeSheet.Activate
オブジェクト変数ActiveSheetの宣言を削除して、上記2行を
quotationList.Worksheets("見積書一覧").Activate
にする。
以上です。
回答ありがとうございます。
そしてお礼遅れて申し訳ないです。
実は、提示したソースの他にも別のシートをアクティブシートにしてるんです。
>quotationList.Worksheets("見積書一覧").Activate
こちらで試してみましたが、「オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とエラーが出てしまいました。
そもそも、この取得する方法は仕様上バグがあるらしいです。(どんなのかは忘れましたけど・・・。)
他の方法で試しても、うまく行かなかった為課題出題者に聞いたところ、「初めセットするセルは固定」らしいので、直で指定し、そこから+1、+2とするようにしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
【VBA】指定した検索条件に一致...
-
特定の文字を含むシートだけマ...
-
XL:BeforeDoubleClickが動かない
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
ExcelのVBAのマクロで他のシー...
-
ExcelVBA シート名を複数セルか...
-
ブック名、シート名を他のモジ...
-
VBA 存在しないシートを選...
-
vbaエクセルマクロ RemoveDupli...
-
VBAで指定シート以外の選択
-
実行時エラー1004「Select メソ...
-
Excel VBA で自然対数の関数Ln...
-
VBA ユーザーフォーム上のチェ...
-
EXCEL VBA 別シートの同じ文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報