Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


252 / 3841 ページ ←次へ | 前へ→

【77398】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:39 -

引用なし
パスワード
   私の回答としては、mougでの回答のとおりですし、なぜmougでの回答ではだめなのかを
書かないと、同じことの繰り返しになりますよ。

エクセル関連のQ&Aサイトの回答者はどこのサイトでもほぼ同じ方ですので。

あと、HNはサイトごとに変えるのではなく、統一したほうがいいです。
・ツリー全体表示

【77397】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 20:32 -

引用なし
パスワード
   ▼カリーニン さん:
>もしかしたらtomiokaさん?
>違いましたらすみません。
>
>最近他サイトで似たような質問に回答したものですから。
モーグに質問をしましたが、予想していた解答が得られませんでしたので、
 別途方法を考えました。以上です。よろしくお願いします。
・ツリー全体表示

【77396】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:02 -

引用なし
パスワード
   もしかしたらtomiokaさん?
違いましたらすみません。

最近他サイトで似たような質問に回答したものですから。
・ツリー全体表示

【77395】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 19:45 -

引用なし
パスワード
   ▼カリーニン さん:
>スクロールバー表示の有無を取得する目的は何でしょうか?
>目的が分かれば回答が付きやすいかもしれません。
テキストボックスに入力された文章全体を表示したいので、フォントサイズを
 小さくしたいと思っており、スクロールバーが出た時点で現在のフォントサイズを一つ小さいサイズにしたいと思ってスクロールバーの出たのがわかればと考えました。以上よろしくお願いします。
・ツリー全体表示

【77394】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 19:25 -

引用なし
パスワード
   スクロールバー表示の有無を取得する目的は何でしょうか?
目的が分かれば回答が付きやすいかもしれません。
・ツリー全体表示

【77393】テキストボックスのスクロールバー
質問  tomi  - 15/9/8(火) 16:19 -

引用なし
パスワード
   よろしくお願いします。 
 ユーザーフォームにテキストボックスを配置しています。マルチラインはTrueです。
 当然自動折り返しとなっています。
 文字をたくさん入力した時に垂直のスクロールバーが自動的に表示されますが、
 そのスクロールバーが表示されたかどうかは取得できますでしょうか。
 変な質問でもうしわけありません。
・ツリー全体表示

【77392】Re:別シートの行書まデーターを列書きデ...
お礼  トキノハジメ  - 15/9/7(月) 16:43 -

引用なし
パスワード
   ▼β さん:
色々ありがとうございました。

なぜか、繋がらなくなり返事が遅くなってすみません。
これからも宜しくおねがいいたします。
・ツリー全体表示

【77391】Re:別シートの行書まデーターを列書きデ...
発言  β  - 15/8/17(月) 21:59 -

引用なし
パスワード
   ▼トキノハジメ さん:

> 2番目のところが良くわからないので もうすこしおしえてください。

いやぁ、そのまんまですが?
エクセルバージョンによって、機能の呼び出し方は少しずつ違うんですが
言葉で説明するより、たとえば
kokodane.com/tec1_17.htm
等を参考にしてください。
・ツリー全体表示

【77390】Re:別シートの行書まデーターを列書きデ...
質問  トキノハジメ  - 15/8/17(月) 21:43 -

引用なし
パスワード
   ▼β さん:
お返事有難うございます。

 
 2番目のところが良くわからないので もうすこしおしえてください。
宜しくお願い致します
・ツリー全体表示

【77389】Re:別シートの行書まデーターを列書きデ...
発言  β  - 15/8/17(月) 20:18 -

引用なし
パスワード
   ▼トキノハジメ さん:

いろんな方法がありますが、エクセル上の操作を行い、それをマクロ記録するとすれば

1.B1:B12 を選択し Ctrl/c
2.C1 を選択し、形式を選択して貼り付け。行列を入れ替える(E)にチェックしてOK
3.Escキーを押す
4.B列を削除

試してみてください。
・ツリー全体表示

【77388】別シートの行書まデーターを列書きデータ...
質問  トキノハジメ  - 15/8/17(月) 19:37 -

引用なし
パスワード
   いつもお世話になります。
表題のように

  B
1 3
2 5
3 6


12 9

を B C D E F G H I J K L M
  3 5 6 8 2 7 ・・   9

のようにコピーするにはなにを使えば良いのか教えて下さい。
宜しくお願い致します。
・ツリー全体表示

【77387】Re:番号合わせ
お礼  トキノハジメ  - 15/8/17(月) 16:40 -

引用なし
パスワード
   ▼rさん:カエムワセトさん;マナさん
種々御指導有難うございました。
これからも宜しくお願いいたします。
他シートからの転記は VBA でしてゆります。
・ツリー全体表示

【77386】Re:別ブックへの指定範囲のコピーペース...
お礼  MIT  - 15/8/15(土) 11:27 -

引用なし
パスワード
   ▼マナさん:
▼βさん:


お二方ともありがとうございます。
なるほど、ワークシートのオブジェクト関数には,
ブックの値も埋め込まれてしまうのですね。

イミディエイトで「.name」で調べていても意図したものが入っているように見えた
ので、そこに誤りがあることに気づきませんでした。

βさん、分かりやすい説明ありがとうございます。よく理解できました。
マナさん、テストマクロありがとうございます。視覚的にバグを見つけることができました。

お二方とも改めて感謝を申し上げます。
・ツリー全体表示

【77385】Re:別ブックへの指定範囲のコピーペース...
発言  β  - 15/8/15(土) 9:59 -

引用なし
パスワード
   ▼MIT さん:

>もし、宜しければ今後の為にも元の構文の何が悪くてエラーになっていたのかを
>ご教示頂けますと幸甚です。

横から失礼します。

もともとのコードは

Destination:=N_wb.N_ws.Range("A2")

でしたね。
マナさんのコードは

Destination:=N_ws.Range("A2")

で、N_ws は Set N_ws = ActiveSheet ですけど、シートオブジェクトには
ブック.シート という値が格納されます。
つまり、ActiveWorkBook.そのシート となります。

また、Set N_wb = ActiveWorkbook ですから

N_wb.N_ws と記述すると ActiveWorkbook.ActiveWorkbook.そのシート
こうなってしまいます。

ActiveWorkbook というオブジェクトの配下には ActiveWorkbook なんてものがないので
これは、おかしいよということになります。
・ツリー全体表示

【77384】Re:別ブックへの指定範囲のコピーペース...
発言  マナ  - 15/8/15(土) 9:04 -

引用なし
パスワード
   ▼MIT さん:

今回のエラーは、

> N_wb.N_ws.Range("A2")

こういうこと?

Sub test()
  Dim wb As Workbook
  Dim ws As Worksheet
  Dim rng As Range
  
  Set wb = ThisWorkbook
  Set ws = wb.Worksheets("Sheet1")
  Set rng = ws.Range("a2")
  
  MsgBox rng.Address(external:=True)
  MsgBox wb.ws.rng.Address(external:=True)
  
End Sub

>ペースト系のメソッドは、非アクティブなオブジェクトに対しては使用できないのでしょうか。

逆です。アクティブにしなくても良いと言いたかったつもりです。
今回はエラーにはなっていませんが、

シート.Range(セル, セル).Copy

という書き方だと、エラーになる場合がありますので
こうしました。

シート.Range(シート.セル, シート.セル).Copy
・ツリー全体表示

【77383】Re:別ブックへの指定範囲のコピーペース...
お礼  MIT  - 15/8/14(金) 22:23 -

引用なし
パスワード
   ▼マナ さん:
>▼MIT さん:
>
>>Ba_Test.Activate 'テストワークブックをアクティブ
>
>どうせなら、
>Order.Activate
>でしょうか
>
>でも、アクティブであることに依存しないほうがよいです。
>
>With Order
>  .Range(.Cells(Temp_row(1), 7), .Cells(Temp_row(2), 7)).Copy _
>    Destination:=N_ws.Range("A2")
>End With

迅速なご回答、有難うございます。
無事に意図する動作を実行できました。

もし、宜しければ今後の為にも元の構文の何が悪くてエラーになっていたのかを
ご教示頂けますと幸甚です。

先ほどとの違いというと、アクティブなブックが検証用のブックから新規ブックに移っていることだと思います。
ペースト系のメソッドは、非アクティブなオブジェクトに対しては使用できないのでしょうか。どうも検索してもその辺りがよくわかりませんでした。

どうぞよろしくお願いいたします。
・ツリー全体表示

【77382】Re:別ブックへの指定範囲のコピーペース...
発言  マナ  - 15/8/14(金) 22:10 -

引用なし
パスワード
   ▼MIT さん:

>Ba_Test.Activate 'テストワークブックをアクティブ

どうせなら、
Order.Activate
でしょうか

でも、アクティブであることに依存しないほうがよいです。

With Order
  .Range(.Cells(Temp_row(1), 7), .Cells(Temp_row(2), 7)).Copy _
    Destination:=N_ws.Range("A2")
End With
・ツリー全体表示

【77381】別ブックへの指定範囲のコピーペーストに...
質問  MIT  - 15/8/14(金) 20:45 -

引用なし
パスワード
   お世話になります。
MITと申します。

【対象となる標準モジュール構文】
_______________________________________
Option Explicit
'オブジェクト変数
Dim Ba_Test As Workbook, Order As Worksheet, N_wb As Workbook, N_ws As Worksheet
________________________________________

Sub 実行マクロ()
'変数設定
Dim StrName As String, SheName As String, i As Long, temp As Variant
Dim Temp_row(2) As Long, para(3) As Long
'Temp_row(1):最低 temp_row(2):最高値 _
para(1):ミニマム (2):マックス (3):ステップ数

'オブジェクト変数の定義
Set Ba_Test = Workbooks("backテスタ.xlsm")
Set Order = Ba_Test.Worksheets("order")

Workbooks.Add '新しいワークブックの挿入

'新規シートのオブジェクト変数挿入
Set N_wb = ActiveWorkbook
Set N_ws = ActiveSheet

Ba_Test.Activate 'テストワークブックをアクティブ

'注文レートの上限セルの場所と下限セルの場所
Temp_row(1) = Order.Cells(1, 7).End(xlDown).Row
Temp_row(2) = Order.Cells(Rows.Count, 7).End(xlUp).Row

'注文レートを新規シートに転記
Order.Range(Cells(Temp_row(1), 7), Cells(Temp_row(2), 7)).Copy _
Destination:=N_wb.N_ws.Range("A2")

以下省略・・・

______________________________________________________

【疑問点】
・「Order.Range(Cells(Temp_row(1), 7), Cells(Temp_row(2), 7)).Copy _
Destination:=N_wb.N_ws.Range("A2")」の部分において、
「実行時エラー438:オブジェクトは、このプロパティまたはメソッドをサポートしていません。」のエラーが発生してしまう。
・Destination部分の構文をコメントアウトすると正常に動作するため、Destination部分の構文に問題がある可能性が高いが、どう間違っているのかがわからない。

【当該マクロの目的】
・検証用のブックで不定回数の検証を実施し、その結果を新しいブックに検証の都度、コピーペーストする。(省略部分は、検証用の別マクロを呼び出す未完成の構文が記録されています。今回の疑問点とは関係がなく、視認性を落とすので省略しています。)

もちろん一度保存しブック名を確定させた後に、ワークブック名、シート名をすべて手入力しコピーペーストする方法があるのはわかりますが、構文が横に長くなるのでできる限り避けたく、皆様のお知恵を拝借できればと考えております。

お忙しいところ恐縮ではありますが、ご教示頂けますと幸甚です。
・ツリー全体表示

【77380】Re:番号合わせ
発言  マナ  - 15/8/14(金) 10:19 -

引用なし
パスワード
   ▼トキノハジメ さん:
マクロでするにしても関数が使えることが必要。
で、関数で簡単にできるようになると、
わざわざマクロ使うのがバカバカしくなりそう。

>A5,A6列に別シートからデータを以降してきて、

ところで、ここは手操作?

Sub test()
  Dim i As Long
  Dim m
  
  Rows(3).ClearContents
  For i = 1 To Cells(2, Columns.Count).End(xlToLeft).Column
    m = Application.Match(Cells(2, i), Rows(5), 0)
    If IsNumeric(m) Then
      Cells(3, i).Value = Cells(6, m).Value
    End If
  Next

End Sub
・ツリー全体表示

【77379】Re:番号合わせ
発言  γ  - 15/8/14(金) 6:44 -

引用なし
パスワード
   失礼ながら、HLookupを使って手作業で求めることはできているのでしょうか。
それが一番簡単だと思いますが、なぜマクロなんでしょうか。

なお、手作業でやるにしても、Match関数とIndex関数を使う方法もあります。
(例のとおり、1から順に番号づけされているなら、Index関数だけでよい)

どうしてもマクロだということなら、
(1)計算式をセルに書き込む方式。(マクロ記録でコードが得られます)
(2)WorksheetFunction.Hlookupで値を求めて、それをセルに書き込む方法。
(3)WorksheetFunctionを介してMatch関数とIndex関数を使って値を求める方法。
(4)Findを使う方法。
(4)Dictionaryを使う方法。
などがありますが、私は簡単な方法を推奨します。
・ツリー全体表示

252 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free