Excel VBA質問箱 IV

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

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


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

【80706】Re:For Next ついてお願いします
発言  マナ  - 19/4/17(水) 18:49 -

引用なし
パスワード
   ▼初心者 さん:
>B8とC8をB9C9からB30C30まで貼り付けたいのですが
>出来ずに困っています。

もう見ていないかもしれませんが…

手操作だと、1行ずつ何回も貼り付けを繰り返しませんよね。
B9:C30を選択して1回で貼り付けると思います。

マクロでも同じですよ。

Sub test()

  Range("B8:C8").Select
  Selection.Copy
  Range("B9:C30").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False

End Sub

で、マクロだとセルを選択する必要はないので
シンプルに、こんな記述にします。


Sub test2()

  Range("B8:C8").Copy Range("B9:C30")

End Sub
・ツリー全体表示

【80705】Re:行番号列の列幅取得方法
発言  マナ  - 19/4/17(水) 18:27 -

引用なし
パスワード
   ▼[名前なし] さん:

>シート内の円グラフクリック時、マクロを使ってクリックした系列を取得しようとしています。
>
>GetChartElementで系列を取得しようとし、
>GetCursorPosでマウス位置を取得しましたが、判定位置にズレがありました。
>

これとは違うのですか?

ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=80696;id=excel

別の方法でもよければ、こんな感じでできませんか。

Private Sub myChart_MouseUp(ByVal Button As Long, ByVal Shift As Long, ByVal x As Long, ByVal y As Long)
  Dim ElementID As Long
  Dim Arg1 As Long
  Dim Arg2 As Long

  myChart.GetChartElement x, y, ElementID, Arg1, Arg2

  If ElementID = xlSeries Then
    MsgBox myChart.SeriesCollection(Arg1).Name
  End If

End Sub
・ツリー全体表示

【80704】Re:For Next ついてお願いします
お礼  初心者  - 19/4/17(水) 14:02 -

引用なし
パスワード
   ありがとうございました
・ツリー全体表示

【80703】行番号列の列幅取得方法
質問  [名前なし]  - 19/4/17(水) 12:34 -

引用なし
パスワード
   シート内の円グラフクリック時、マクロを使ってクリックした系列を取得しようとしています。

GetChartElementで系列を取得しようとし、
GetCursorPosでマウス位置を取得しましたが、判定位置にズレがありました。

CommandBars("Formula Bar")の高さ分減らすことで縦軸は調整できたのですが、
横軸のズレが残ったままとなっています。

横軸のズレを治すために、行番号列(A列の左)の幅を取得したいのですが、
CommandBars("Column").Widthを42、45、84の3種で行っても正しい値が取れません。

どの様な方法で取得したらよいでしょうか?
標準モジュールを使用しています。
・ツリー全体表示

【80702】Re:For Next ついてお願いします
回答  [名前なし]  - 19/4/17(水) 12:22 -

引用なし
パスワード
   ▼初心者 さん:
>B8とC8をB9C9からB30C30まで貼り付けたいのですが
>出来ずに困っています。
>よろしくお願いします
>
>Sub Macro1()
>'
>'
>'Dim i As long
>
> For i = 9 To 30
>
>  Range("B8:C8").Select
>  Selection.Copy
>  Range("B9").Select
>  ActiveSheet.Paste
>  Application.CutCopyMode = False
>  
>  
>  Next
>  
>End Sub

>  Range("B9").Select

常にB9を選択しています。
下に進むには"B9"を"B"+CStr(i)に変更する必要があります。
・ツリー全体表示

【80701】For Next ついてお願いします
質問  初心者  - 19/4/17(水) 11:21 -

引用なし
パスワード
   B8とC8をB9C9からB30C30まで貼り付けたいのですが
出来ずに困っています。
よろしくお願いします

Sub Macro1()
'
'
'Dim i As long

For i = 9 To 30

  Range("B8:C8").Select
  Selection.Copy
  Range("B9").Select
  ActiveSheet.Paste
  Application.CutCopyMode = False
  
  
  Next
  
End Sub
・ツリー全体表示

【80700】Re:グラフのアクティブ線が何番目である...
お礼  TK  - 19/4/16(火) 9:52 -

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

ありがとうございます。
出来ました。

グラフの数式から持ってくるという発想全くありませんでしたので、
目から鱗でした。

因みに感謝の投稿には蛇足ですが
作成中のグラフが4要素からなるグラフだけでなく
複雑なグラフも混じっていたのですが、UBound()を用いることで達成できました。

本当にありがとうございます。
・ツリー全体表示

【80699】Re:指定する文字を含む列を別ブックにコ...
発言  マナ  - 19/4/15(月) 23:45 -

引用なし
パスワード
   ▼にゃんみ さん:

まずは、こんな感じで考えてはどうでしょうか

1)「りんご」が何列目にあるか検索
2)1)の列をコピー
3)既存ブックのまとめシートに1列ずつずらしながら貼り付け
4)これを、すべてのシートで繰り返し
・ツリー全体表示

【80698】指定する文字を含む列を別ブックにコピー...
質問  にゃんみ  - 19/4/15(月) 23:17 -

引用なし
パスワード
   りんご みかん バナナ いちご
1    4   3   1
:    :   :   :
のシートが何枚もあるのですが、りんごの列を別の新規ブック(既存ブックでも)にコピーして1シートに

1シート目のりんご  2シート目のりんご…

のようにまとめをしたいのですが、どのようにVBAを作成したらよいかご教授いただけたら幸いです。
フィルターをかけるVBAも考えたのですが、列をまるごと抜き出したいので使用できませんでした。
・ツリー全体表示

【80697】Re:グラフのアクティブ線が何番目である...
発言  マナ  - 19/4/15(月) 18:30 -

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

こんな感じでどうですか

Sub test()
  Dim s
  
  If TypeName(Selection) = "Series" Then
    s = Split(Selection.Formula, ",")
    MsgBox Val(s(3))
  End If
    
End Sub
・ツリー全体表示

【80696】グラフのアクティブ線が何番目であるかの...
質問  TK  - 19/4/15(月) 13:15 -

引用なし
パスワード
   グラフの操作をする場合に
ActiveChart.FullSeriesCollection(3).〜
として、グラフの3番目の線に対して変更を加えるという方法あると思いますが

逆にグラフ上で3番目のラインを選びアクティブにした状態で
「この線は3番目の線です。」と呼び出す方法はないでしょうか

.FullSeriesCollection(x)のxが確認できるマクロについて
ご存知の方いらっしゃいましたら、ご教授いただければ幸いです。

よろしくお願い致します。
・ツリー全体表示

【80695】Re:excel vba redim実行でインデックスが...
回答  γ  - 19/4/12(金) 10:48 -

引用なし
パスワード
   配列の宣言に As が抜けていたり、Collsという意味不明なものがあったり、
Cells(a, b)やCells(c,d)の値について回答がないので、
質問への回答は難しいですね。

ところで、実行したいのはどういうことなんでしょうか。
想像ですが、
Range(Cells(1,1),Cells(3,4))のセル範囲の値を配列に取り込みたい
といったことではないですか?

もしそうなら、こういう風にします。

Sub test()
  Dim v As Variant

  v = Range(Cells(1, 1), Cells(3, 4)).Value
  MsgBox v(1, 1) '確認してみて下さい。
  MsgBox v(2, 2) ' vは配列になっているはずです。
  MsgBox v(3, 4) 
End Sub
・ツリー全体表示

【80694】Re:条件に合った場合だけ、その行を非表...
回答  γ  - 19/4/12(金) 9:07 -

引用なし
パスワード
   【B列が「高い」もしくはC列が「あり」だったら、その行を非表示】
は、
【1.B列が「高い」ではなく、かつ、2.C列が「あり」ではない、ものを抽出する】
と同じことです。

オートフィルタのテキストフィルタにある、「指定の値に等しくない」を使って
指定するとよいと思います。
その動作をマクロ記録すれば、参考となるコードが得られると思います。
・ツリー全体表示

【80693】Re:条件に合った場合だけ、その行を非表...
お礼  ビギナー  - 19/4/11(木) 10:32 -

引用なし
パスワード
   >マナさん

返事ありがとうございました。
また、返信遅くなり申し訳ございません。

マナさんの最初のアドバイス通り、オートフィルタでやってみました。

Rows("1:1").Select

Selection.AutoFilter

With Range("A")
.Autofilter Field:=2, Criteria1=""
.Autofilter Field:=3, Criteria1=""
End with

これで該当する項目があった場合は非表示に出来ました。

取り急ぎ報告まで。
・ツリー全体表示

【80691】Re:ユーザー関数からセルの背景色の変更
回答  よろずや  - 19/4/10(水) 16:21 -

引用なし
パスワード
   ' ThisWorkbookモジュール
Option Explicit

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
  Call test2(Sh)
End Sub

' 標準モジュール
Option Explicit
Dim Dic1 As Object ' Scripting.Dictionary

Function InteriorColor(Value)
  InteriorColor = Value
  test1 Array("Interior.Color", RGB(0, 255, 0))
End Function

Sub test1(arg)
  If Dic1 Is Nothing Then
    Set Dic1 = CreateObject("Scripting.Dictionary")
  End If
  If Dic1.Exists(Application.ThisCell.Address(External:=True)) Then
    Dic1.Item(Application.ThisCell.Address(External:=True)) = arg
  Else
    Dic1.Add Application.ThisCell.Address(External:=True), arg
  End If
End Sub

Sub test2(Sh) 'マクロ一覧に出さないために引数を付加
Dim Address As Variant
  For Each Address In Dic1.Keys
    Select Case Dic1.Item(Address)(0)
      Case "Interior.Color"
        Range(Address).Interior.Color = Dic1.Item(Address)(1)
    End Select
    Dic1.Remove Address
  Next Address
End Sub

これで、当該の関数を実行しているセルの背景色を変更できます。

いびきかいてないで返事してよね。
・ツリー全体表示

【80690】Re:excel vba redim実行でインデックスが...
発言  マナ  - 19/4/9(火) 20:05 -

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

想像では、こういうことでしょうか?

ReDim 配列(a To b, c To d)
・ツリー全体表示

【80689】Re:excel vba redim実行でインデックスが...
発言  マナ  - 19/4/9(火) 19:53 -

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


    >ReDim 配列(Colls(a, b), Cells(c,d)) As Variant <-- エラー番号:9

>疑問
>1.何故、有効範囲外となるのか?
>2.Variant型配列の大きさを設定する方法?
>

Colls(a, b)やCells(c,d)には、何が入力されているのでしょうか?
・ツリー全体表示

【80688】excel vba redim実行でインデックスが有...
質問  koba E-MAIL  - 19/4/9(火) 18:58 -

引用なし
パスワード
   Dim 配列() Variant

a = Cells(1, "G").Value          <-- 1(セルの値)
b = Cells(2, "G").Value          <-- 1(セルの値)
c = Cells(1, "H").Value          <-- Count(5:20004)の値(ワークシート関数)
d = Cells(2, "H").Value          <-- 8(セルの値)
ReDim 配列(Colls(a, b), Cells(c,d)) As Variant <-- エラー番号:9

================================================
疑問
1.何故、有効範囲外となるのか?
2.Variant型配列の大きさを設定する方法?

追伸 私、VBAの超初心者のでよろしくお願いいたします。
  
・ツリー全体表示

【80687】Re:ユーザー関数からセルの背景色の変更
質問  γ  - 19/4/8(月) 22:07 -

引用なし
パスワード
   いびき さんだけに、まだ眠っているのでしょうか。
起きていたら、返事くらいしてくださいな。
・ツリー全体表示

【80686】Re:UserFormによる編集について
お礼  [名前なし]  - 19/4/6(土) 7:53 -

引用なし
パスワード
   マナ様

連絡が遅くなり大変申し訳ありませんでした。

アドバイスありがとうございました。
ご教示いただいた方法も試しながら作成していきたいと思います。

今後もよろしくお願いいたします。
・ツリー全体表示

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