Excel VBA質問箱 IV

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

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


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

【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 -

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

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

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

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

【80685】Re:セル内の特定文字列から特定文字列の...
お礼  台所  - 19/4/4(木) 15:02 -

引用なし
パスワード
   >>よろずやさん

ご回答ありがとうございます。(返信遅れすみません;

いただいた内容を組み込みまして理想通りにいきました!
大変助かりました、効率化できそうです。
・ツリー全体表示

【80684】Re:ユーザー関数からセルの背景色の変更
回答  よろずや  - 19/4/4(木) 13:03 -

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

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

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

Function CellColor(Value, ColorIndex)
  CellColor = Value
  If Dic1 Is Nothing Then
    Set Dic1 = CreateObject("Scripting.Dictionary")
  End If
  If Dic1.Exists(Application.Caller.Address(External:=True)) Then
    Dic1.Item(Application.Caller.Address(External:=True)) = ColorIndex
  Else
    Dic1.Add Application.Caller.Address(External:=True), ColorIndex
  End If
End Function

Sub test(Sh) 'マクロ一覧に出さないために引数を付加
Dim Address As Variant
  For Each Address In Dic1.Keys
    Range(Address).Interior.ColorIndex = Dic1.Item(Address)
    Dic1.Remove Address
  Next Address
End Sub
・ツリー全体表示

【80683】Re:ユーザー関数からセルの背景色の変更
回答  γ  - 19/4/4(木) 6:21 -

引用なし
パスワード
   補足です。
あ、そうですね、条件付き書式の利用が良いでしょうね。
・単に、Rangeを引数に、Boolean値を返すユーザー関数を作成しておいて、
・その関数を使った式を条件付き書式の「ルール」で指定し、
・書式(塗りつぶし)部分は条件式書式に委ねる
ことで、万事目出度しということになるでしょう。

既に指摘いただいているように、
上記で不明なら、現在のユーザー定義関数を提示してもらえば回答可能ですね、

ちなみに、書式変更ができない仕様という点に関しては、
下記のMicrosoft社の作成記事を参照のこと。
「Excel のユーザー定義関数の制限について」
ht tps://support.microsoft.com/ja-jp/help/170787/description-of-limitations-of-custom-functions-in-excel
関数型プログラミング言語としてのExcelユーザー関数は、値を返すことが本務であって、
書式などはいわゆる「環境」に属すものであり、それを変更することは「副作用」とみなされるので、
言語仕様としてできないことになっているものと思います。
この制約はExcelのVersionには依存しない原則的なものだと思います。
・ツリー全体表示

【80682】Re:ユーザー関数からセルの背景色の変更
発言  マナ  - 19/4/3(水) 20:23 -

引用なし
パスワード
   ▼いびき さん:

どのような関数なのか、具体的に説明できますか。
試してみたコードでもよいです。

Changeイベントとか、条件付き書式では、できないのでしょうか。
・ツリー全体表示

【80681】Re:ユーザー関数からセルの背景色の変更
回答  γ  - 19/4/3(水) 18:38 -

引用なし
パスワード
   ユーザー定義関数で書式を変更することは
仕様上できません。
マクロを使って一括操作するなどの方法を
取ってください。
・ツリー全体表示

【80680】ユーザー関数からセルの背景色の変更
質問  いびき  - 19/4/3(水) 17:54 -

引用なし
パスワード
   ユーザー定義関数を作成しています。
当該の関数を実行しているセルの背景色を変更しようとすると関数の実行が停止し、セルには「#VALUE!」が表示されます。

Application.ThisCell.Interior.Color = RGB(0,255,0)

ウォッチから上記オブジェクトへ変更を行うと
実行時エラー'1004':
が表示されます。

Application.ThisCell.Font.Color
の変更は可能です。

変更方法の判る方がいらっしゃいましたらご教授いただけないでしょうか。
よろしくお願いします。
・ツリー全体表示

【80679】Re:セル内の特定文字列から特定文字列の...
回答  よろずや  - 19/4/3(水) 17:09 -

引用なし
パスワード
   こんな感じ。

Option Explicit
Sub Macro1()
Dim pos1 As Long
Dim pos2 As Long
Dim pos3 As Long
Dim pos4 As Long
  With Range("A1")
    pos1 = InStr(1, .Value, "あああ")
    pos2 = InStr(pos1, .Value, "いいい")
    pos3 = InStr(pos2, .Value, "ううう")
    pos4 = Len(.Value) + 1
    .Characters(Start:=pos1, Length:=pos2 - pos1).Font.Color = vbRed
    .Characters(Start:=pos2, Length:=pos3 - pos2).Font.Color = vbBlue
    .Characters(Start:=pos3, Length:=pos4 - pos3).Font.Color = vbGreen
  End With
End Sub
・ツリー全体表示

【80678】セル内の特定文字列から特定文字列のフォ...
質問  台所  - 19/4/3(水) 14:17 -

引用なし
パスワード
   【質問】
1つのセル内の特定文字列から特定文字列の直前までのフォント変更するExcel VBAコードがわかりません。


【例】
・「あああ」から「いいい」の上の行までを赤色にする
・「いいい」から「ううう」の上の行までを青色にする
・「ううう」以降を緑色にする

--A1セルここから--
あああ
25615615231

いいい
11156315619198
519615123455
516156131848132

ううう
156165121231

--A1セルここまで--


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

【80676】Re:条件に合った場合だけ、その行を非表...
発言  マナ  - 19/4/1(月) 22:19 -

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

B123「高い」、または、C123「あり」だったら、


If Cells(123, "B").Value = "高い" Or Cells(123, "C").Value = "あり" Then
・ツリー全体表示

【80675】Re:条件に合った場合だけ、その行を非表...
発言  マナ  - 19/4/1(月) 22:12 -

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

B123「高い」だったら、

If Range("B123").Value = "高い" Then
とか
If Cells(123, "B").Value = "高い" Then

が、わかりやすいでしょうか。
・ツリー全体表示

【80674】Re:条件に合った場合だけ、その行を非表...
発言  ビギナー  - 19/4/1(月) 21:30 -

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

返信ありがとうございます。
ifを使った方法で試しているのですが、
どういうコードになるのかよく分からないのですよね・・。
ちょっともう少し試してみますが。
・ツリー全体表示

【80673】Re:WORKDAY関数をVBAで使用したい
お礼  みも  - 19/4/1(月) 18:23 -

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

>J1の書式を標準にしておけばよいだけかもしれませんが…

お世話になっております。

本日実験した所、workday関数の前にnumberformatlocalで標準に変換したら全てうまく動作しました。

的確なアドバイスを頂き、本当にありがとうございます。

今後とも質問させて頂くことがあるかと思いますが、お時間ありましたら何卒宜しくお願い致します。
・ツリー全体表示

【80672】Re:セルから日付を取得して、その日から...
発言  マナ  - 19/4/1(月) 14:40 -

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

本題とは別ですが

 
>  For i = 5 To Range("A65536").End(xlUp).Row

実際には、65535個もデータがないだろうから

Range("A10000").End(xlUp).Row

でも、よいです。
意味もわからず使うくらいであれば、
想定されるデータ数より大きい数字にしておけばよいです。

>  Rows(i & ":" & i).EntireRow.Hidden = True

間違いではありませんが、

Rows(i).Hidden = True

のほうが、簡単でわかりやすいです。
・ツリー全体表示

【80671】Re:セルから日付を取得して、その日から...
お礼  ぐら  - 19/4/1(月) 14:31 -

引用なし
パスワード
   .Value-2でよかったのですね!
ありがとうございます。無事動きました。
30になってエクセルをちゃんと使う仕事についたので四苦八苦しております
・ツリー全体表示

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